Corutine și Multitasking Cooperativ în Lua: create, resume, yield și wrap în Lua

Ghid complet pentru corutine în Lua: multitasking cooperativ fără fire paralele de sistem, pauzarea cu yield, reluarea cu resume și implementarea de iteratori.

Sintaxă
local co = coroutine.create(fn); coroutine.resume(co); coroutine.yield()

Spre deosebire de limbajele care folosesc fire paralele la nivel de sistem de operare (threads preemtive cu blocaje și mutex-uri), Lua oferă corutine cooperative. O corutină este un fir de execuție cu propria stivă de apeluri, dar care nu este întrerupt niciodată forțat: ea cedează controlul în mod voluntar apelând coroutine.yield() și este reluată ulterior de unde a rămas prin coroutine.resume().

Producător – Consumator implementat cu corutine Lua
-- Funcție producător care generează valori pe rând:
local function generatorNumere()
    for i = 1, 3 do
        print(string.format("  [Producător] Calculez valoarea %d...", i))
        coroutine.yield(i * 10) -- Pauzează execuția și transmite valoarea afară
    end
    return "FINALIZAT"
end

-- Crearea corutinei:
local co = coroutine.create(generatorNumere)

print("Starea inițială:", coroutine.status(co)) -- "suspended"

-- Reluarea execuției pas cu pas:
local succes1, valoare1 = coroutine.resume(co)
print("Valoare primită 1:", valoare1) -- 10

local succes2, valoare2 = coroutine.resume(co)
print("Valoare primită 2:", valoare2) -- 20

local succes3, valoare3 = coroutine.resume(co)
print("Valoare primită 3:", valoare3) -- 30

local succes4, rezultatFinal = coroutine.resume(co)
print("Rezultat final:", rezultatFinal) -- "FINALIZAT"
print("Stare finală:", coroutine.status(co)) -- "dead"
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Corutine și Multitasking Cooperativ în Lua: create, resume, yield și wrap

Ai o nelămurire despre utilizarea comenzii Corutine și Multitasking Cooperativ în Lua: create, resume, yield și wrap sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.