{}const=>[]async()letfn</>var
EntwicklungLua

Coroutines in Lua: So schreiben Sie Schritt-für-Schritt-Code ohne Multithreading

Wir analysieren Coroutines in Lua - eine einfache Möglichkeit, Funktionen anzuhalten und fortzusetzen. Ideal für Spiele, Netzwerkaufgaben und asynchronen Code.

К

Kodik

Autor

2 Min. Lesezeit

Wenn es um Parallelität geht, denken die meisten Programmierer sofort an Multithreading oder Asynchronität. Aber Lua hat sein eigenes einzigartiges Werkzeug - Korrutine. Sie ermöglichen es Ihnen, Code so zu schreiben, als hätten Sie mehrere Threads, während Sie innerhalb eines Ausführungsthreads bleiben.

Coroutines sind leichte "Ströme", die manuell angehalten und fortgesetzt werden können.

Im Gegensatz zu herkömmlichen Funktionen, die von Anfang bis Ende ausgeführt werden, kann ein Coroutine:

  • bleiben Sie in der Mitte der Ausführung stehen,

  • die Kontrolle an den aufrufenden Code zurückgeben,

  • und dann weiterarbeiten von der gleichen Stelle.

Es ist wie eine Pause im Spiel 🎮: Sie haben den Status gespeichert und dann einfach an der gleichen Stelle fortgefahren.

Beispiel für Coroutine in Lua

function worker()
    for i = 1, 3 do
        print("Step " .. i)
        coroutine.yield() -- приостанавливаемся
    end
end

co = coroutine.create(worker)

coroutine.resume(co) --> Шаг 1
coroutine.resume(co) --> Шаг 2
coroutine.resume(co) --> Шаг 3

Analyse:

  • coroutine.create - erstellt eine Coroutine.

  • coroutine.resume - startet oder setzt sie fort.

  • coroutine.yield — setzt die Ausführung auf Pause.

🔥 100.000+ Schüler sind bereits bei uns

Genug Theorie gelesen?
Zeit zu coden!

Kodik — eine App, in der du durch Praxis programmieren lernst. KI-Mentor, interaktive Lektionen, echte Projekte.

🤖 KI 24/7
🎓 Zertifikate
💰 Kostenlos
🚀 Jetzt starten
Heute beigetreten

Wie unterscheiden sich Coroutines von Threads?

Threads

Coroutines

Betriebssystem gesteuert

Werden von Lua selbst verwaltet

Können parallel ausgeführt werden

Werden nacheinander ausgeführt

Schwierig zu debuggen

Einfach und vorhersehbar

Daten müssen geschützt werden (mutex, lock)

Sicher, da es keinen echten Parallelismus gibt

Wo sind Coroutines nützlich?

  • Spiele und Animationen — Schritt-für-Schritt-Szenarien ohne verschachtelte if und Timer.

  • Asynchrone Aufgaben — Netzwerkanfragen, Ereignisverarbeitung.

  • Skript-Szenarien — eine einfache Beschreibung des Verhaltens von NPCs oder Bots.

Ein kleines Beispiel für das Spiel

function npc()
    print("NPC: I'm coming...")
    coroutine.yield()
    print("NPC: I stopped...")
    coroutine.yield()
    print("NPC: I'm coming again!")
end

co = coroutine.create(npc)
coroutine.resume(co) -- NPC: Я иду...
coroutine.resume(co) -- NPC: Я остановился...
coroutine.resume(co) -- NPC: Я снова иду!

Anstelle einer komplexen Logik gibt es ein einfaches Skript, als ob Sie ein Mini-Theater für Objekte schreiben würden.

Ergebnis

Coroutines in Lua sind keine Multithreading, aber eine einfache Möglichkeit, parallele Ausführung zu simulieren. Sie sind ideal für Spiele, Netzwerkanwendungen und Szenarien, in denen die Kontrolle über die Reihenfolge der Aktionen wichtig ist.

Wenn Sie Lua lernen, sollten Sie unbedingt mit Coroutines spielen. Dies kann Ihre Architektur erheblich vereinfachen. Kodierung interessante Kurse mit Lua-Aufgaben.

Und wir haben auch einen aktiven Telegram-Kanal, wo wir coole Ideen diskutieren, Erfahrungen teilen und Aufgaben gemeinsam analysieren — Lernen wird nicht nur nützlich, sondern auch unterhaltsam.

🎯Hör auf zu zögern

Artikel gefallen?
Zeit zum Üben!

Bei Kodik liest du nicht nur — du schreibst sofort Code. Theorie + Praxis = echte Skills.

Sofortige Praxis
🧠KI erklärt Code
🏆Zertifikat

Keine Registrierung • Keine Karte