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.resumeDeğ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.resumeDeğ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_sFiber'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
yieldveyaresumenoktaları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.nextFiber'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.newileresume, bir fiber'ı çalıştırır ve sürdürür.Fiber.yieldyü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.