0Pricing
Ruby Academy · Ders

Fiber'lar

İşbirlikçi eşzamanlılık

Fiber'lar, CoddyKit'te ücretsiz bir Ruby Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Ruby Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Ruby Academy kursu toplamda 4 dersten oluşur.

Fiber Nedir?

Bir Fiber, elle denetlediğiniz hafif bir yürütme birimidir. İş parçacıklarının aksine fiber kendiliğinden çalışmaz; denetimi ona açıkça verirsiniz ve o da denetimi size geri verir.

  • Buna işbirlikçi eşzamanlılık adı verilir.
  • Fiber'ları oluşturmak ve duraklatmak düşük maliyetlidir.
  • Ruby'deki üreteçlerin ve eşzamansız G/Ç'nin temelini oluştururlar.

Oluşturma ve Sürdürme

Fiber.new ile bir fiber oluşturun ve resume ile başlatın veya sürdürün. Blok, tamamlanana ya da duraklayana kadar çalışır.

fiber = Fiber.new do
  puts "Inside the fiber"
end

fiber.resume
puts "Back in main"

yield ile Duraklatma

Fiber.yield, fiber'ı duraklatır ve denetimi resume çağrısını yapan kişiye geri verir. Bir sonraki resume, yürütmeyi yield işleminden hemen sonra sürdürür.

fiber = Fiber.new do
  puts "Step 1"
  Fiber.yield
  puts "Step 2"
end

fiber.resume
puts "Main between steps"
fiber.resume

Değerleri Dışarı Aktarma

Fiber.yield öğesine geçirilen bağımsız değişken, resume işleminin dönüş değeri olur. Bu, bir fiber'ın isteğe bağlı olarak bir değer dizisi üretmesini sağlar.

fiber = Fiber.new do
  Fiber.yield 10
  Fiber.yield 20
  30
end

puts fiber.resume
puts fiber.resume
puts fiber.resume

Değerleri İçeri Aktarma

resume öğesine geçirilen bağımsız değişken, fiber'ın içindeki Fiber.yield işleminin dönüş değeri olur. İletişim iki yönde gerçekleşir.

fiber = Fiber.new do
  got = Fiber.yield "ready"
  puts "Fiber received: " + got
end

puts fiber.resume
fiber.resume("hello")

Sonsuz Sayaç

Bir fiber duraklayıp sürdürülebildiği için her şeyi önceden hesaplamadan sonsuz, isteğe bağlı üretilen bir diziyi modelleyebilir.

counter = Fiber.new do
  n = 1
  loop do
    Fiber.yield n
    n += 1
  end
end

3.times { puts counter.resume }

Canlı Olup Olmadığını Denetleme

Fiber#alive?, fiber'ın hâlâ sürdürülebilir olup olmadığını bildirir. Ölü bir fiber'ı sürdürmek FiberError oluşturur.

fiber = Fiber.new { puts "done" }
puts "Alive before: " + fiber.alive?.to_s
fiber.resume
puts "Alive after: " + fiber.alive?.to_s

Fiber'lar ve İş Parçacıkları

Temel farklılıklar:

  • İş parçacıkları çalışma zamanı tarafından zamanlanır; fiber'lar tarafınızdan zamanlanır.
  • İş parçacıklarının önceliği herhangi bir anda kesilebilir; fiber'lar yalnızca yield veya resume noktalarında geçiş yapar.
  • Yalnızca bir fiber çalıştığı ve geçiş noktaları açıkça belirtildiği için fiber'lar yarış durumlarını önler.

Numaralandırıcılar Fiber Kullanır

Ruby'nin tembel numaralandırıcıları fiber'lar üzerine kuruludur. Harici bir yineleyici, bir fiber'ın yield etmesine benzer şekilde değerler arasında duraklar.

enum = Enumerator.new do |y|
  y << 1
  y << 2
  y << 3
end

puts enum.next
puts enum.next

Fiber'lar ve Eşzamansız G/Ç

Modern Ruby, bir fiber zamanlayıcısı kancası içerir. async paketi gibi kütüphaneler bunu kullanır; böylece bir fiber G/Ç beklediğinde zamanlayıcı başka bir fiber'ı otomatik olarak sürdürür.

Bu, sıradan ardışık kod gibi görünen kodlarla yüksek eşzamanlılıklı G/Ç sağlar.

Fiber'lar Ne Zaman Kullanılmalı

Şu durumlarda fiber kullanın:

  • Gerektikçe değer üreten tembel üreteçler.
  • Korutin tarzı denetim akışı.
  • Kilit kullanmadan ince ayrıntı düzeyinde, belirlenebilir geçiş.

Günlük eşzamanlılık işlerinin çoğunda iş parçacıkları veya (perde arkasında fiber kullanan) async paketi daha kolaydır.

Hızlı Kontrol

Fiber'lar hakkındaki anlayışınızı ölçün.

Özet: Fiber'lar

Fiber'larla işbirlikçi eşzamanlılığı öğrendiniz:

  • Fiber.new ile resume, bir fiber'ı çalıştırır ve sürdürür.
  • Fiber.yield yürütmeyi duraklatır ve denetimi geri verir.
  • Değerler, yield ve resume bağımsız değişkenleri aracılığıyla iki yönde akar.
  • Fiber'lar numaralandırıcıları ve eşzamansız G/Ç zamanlayıcılarını çalıştırır.

Sırada, nihayet gerçek paralellik sağlayan Ractor'lar var.

Sıkça Sorulan Sorular

“Fiber'lar” dersi ücretsiz mi?

Evet — “Fiber'lar” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Ruby Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Ruby Academy kursu toplamda 4 dersten oluşur.

“Fiber'lar” dersinde ne öğreneceğim?

İşbirlikçi eşzamanlılık Ruby Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Ruby Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Ruby Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Fiber'lar” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Ruby Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Ruby Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. İş Parçacıkları
  2. GVL Açıklaması
  3. Fiber'lar
  4. Ractor'lar
← Ruby Academy Sayfasına Dön