Basit Bir Olay Döngüsü Oluşturma
Bir çalıştırma kuyruğu ve resume döngüsüyle coroutine zamanlayıcısı uygulayın.
Basit Bir Olay Döngüsü Oluşturma, CoddyKit'te ücretsiz bir Lua Academy dersidir. Bu, 4 dersinin 1. 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, Lua Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Lua Academy kursu toplamda 4 dersten oluşur.
Olay Döngüsü Nedir?
Bir olay döngüsü, beklenen olayları hazır olduğunda korutinleri devam ettiren bir zamanlayıcı çalıştırır. İşletim sistemi iş parçacıkları olmadan birden çok eşzamanlı görevi mümkün kılar.
Çalıştırma Kuyruğu
Hazır korutinlerden oluşan bir kuyrukla başlayın. Her adımda hazır korutinlerin tümünü teker teker işleyin.
local queue = {}
local function spawn(fn)
queue[#queue+1] = coroutine.create(fn)
endDöngü Adımı
Her adımda kuyruktan çıkarıp her hazır korutini devam ettirin. yield yapan korutinler kuyruğa yeniden eklenene kadar duraklatılır.
local function runLoop()
while #queue > 0 do
local current = queue
queue = {}
for _, co in ipairs(current) do
local ok, err = coroutine.resume(co)
if not ok then print("Error:", err) end
if coroutine.status(co) ~= "dead" then
queue[#queue+1] = co -- re-queue if still alive
end
end
end
endDuraklamak için yield
Bir korutin beklemesi gerektiğinde yield yapar. Zamanlayıcı onu sonraki adımda devam ettirir.
spawn(function()
print("Task A: step 1")
coroutine.yield() -- pause
print("Task A: step 2")
end)
spawn(function()
print("Task B: only step")
end)
runLoop()Benzetilmiş Gecikmeler
Bir korutinin ne zaman uyanması gerektiğini izleyerek bir uyku işlemi uygulayın.
local timers = {}
local function sleep(seconds)
local wakeAt = os.clock() + seconds
timers[coroutine.running()] = wakeAt
coroutine.yield()
endZamanlayıcılı Döngü
Her adımda zamanlayıcıları denetleyin ve uyanma zamanı geçmiş olan korutinleri kuyruğa yeniden ekleyin.
local function timedLoop()
while #queue > 0 or next(timers) do
local now = os.clock()
for co, wakeAt in pairs(timers) do
if now >= wakeAt then
timers[co] = nil
queue[#queue+1] = co
end
end
-- process queue...
end
endG/Ç Tümleştirmesi
Bir select/poll mekanizmasıyla tümleştirin: G/Ç bekleyen korutinlerde yield yapın ve dosya tanımlayıcıları hazır olduğunda onları devam ettirin.
Hata Yalıtımı
Her korutinin devam ettirilmesini pcall ile sarın veya başarılı dönüş değerini denetleyin. Çöken bir korutin tüm döngüyü durdurmamalıdır.
İşbirlikçi Zamanlama
Görevler isteyerek yield yapmalıdır. yield yapmadan sonsuza dek çalışan bir korutin diğer tüm görevleri aç bırakır. Güvenilmeyen kod için zorunlu durdurma koruması olarak adım sayacıyla birlikte debug.sethook kullanın.
Görev Öncelikleri
Birden çok kuyruk (yüksek/normal/düşük öncelik) uygulayın ve her adımda önce yüksek öncelikli kuyrukları boşaltın.
Gerçek Dünya Alternatifleri
Üretim amaçlı olay döngüleri: luv (libuv bağlamaları), copas (soket tabanlı), OpenResty (nginx + cosocket'ler). Kendi çözümünüzü yalnızca öğrenme veya gömülü kullanım için yazın.
Olay Döngüsü Sorusu
İşbirlikçi bir olay döngüsündeki korutinler neden isteyerek yield yapmalıdır?
Özet: Basit Olay Döngüsü
Bir olay döngüsü korutinlerden oluşan bir çalıştırma kuyruğu kullanır. Her adım hazır korutinleri devam ettirir. Görevler duraklamak için yield yapar ve koşulları karşılandığında kuyruğa yeniden eklenir. Bu, tek iş parçacıklı Lua'da eşzamanlı G/Ç işlemlerini ve zamanlayıcıları mümkün kılar.
Sıkça Sorulan Sorular
“Basit Bir Olay Döngüsü Oluşturma” dersi ücretsiz mi?
Evet — “Basit Bir Olay Döngüsü Oluşturma” 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 Lua Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Lua Academy kursu toplamda 4 dersten oluşur.
“Basit Bir Olay Döngüsü Oluşturma” dersinde ne öğreneceğim?
Bir çalıştırma kuyruğu ve resume döngüsüyle coroutine zamanlayıcısı uygulayın. Lua 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.
Lua Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Lua 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 1. dersidir.
“Basit Bir Olay Döngüsü Oluşturma” 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 Lua Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Lua 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
- Basit Bir Olay Döngüsü Oluşturma
- Coroutine'lerle Async/Await
- Promise Benzeri Örüntüler
- luasocket ile Engellemesiz G/Ç