0Pricing
Lua Academy · Ders

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)
end

Dö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
end

Duraklamak 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()
end

Zamanlayı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
end

G/Ç 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

  1. Basit Bir Olay Döngüsü Oluşturma
  2. Coroutine'lerle Async/Await
  3. Promise Benzeri Örüntüler
  4. luasocket ile Engellemesiz G/Ç
← Lua Academy Sayfasına Dön