Was ist der Vorteil der Stapel weniger Microthread Python als Lua Koroutine in Umsetzung Zustandsmaschine für Spiel?

StackOverflow https://stackoverflow.com/questions/4064594

Frage

Jeder Vorteil auf Stapel lose Python implentation als Lua Koroutine? Was ist der Unterschied von ihnen?

War es hilfreich?

Lösung

stackless Python und Tasklets (ich habe keine Programmierung mit stackless Python getan, aber ich habe einige Details darüber lesen, wie sie umgesetzt wird):

Vorteile:

  1. Leichte die meiste Zeit.
  2. Hat Scheduler zu verwalten, welche Tasklet get next nach den aktuellen Renditen wieder aufzunehmen.
  3. Unterstützung für preemptives Scheduling. (Das heißt Lauf für X-Befehle)
  4. Kanäle für die Kommunikation zwischen Tasklets.

Nachteile:

  1. Manchmal müssen C-Stack, wenn von einem Tasklet ergibt. (Das heißt, wenn sie von einigen C Rückrufe Nachgeben)

Lua 5.1 mit einfachen Koroutinen:

Vorteile:

  1. Leicht.
  2. resume () / Ertrag () Funktionen erlauben Verbraucher / Hersteller Modell der Kommunikation.

Nachteile:

  1. Keine eingebauten Scheduler. Sie haben zu verwalten wieder aufzunehmen und Nachgeben Koroutinen.
  2. kann nicht aus einer C-Funktion ergibt, eine metamethod oder einen Iterator. (Lua 5.2 werden die meisten dieser Einschränkungen entfernen, luajit 1.1 bietet leichten c-Stack-Umschaltung von überall zu ergeben)
  3. Keine Einbau-preemptives Scheduling-Unterstützung. (Würde Debug-Haken verwenden)

Lua 5.1 mit ConcurrentLua :

Vorteile:

  1. Leicht.
  2. Scheduler mit kooperativen Kontextwechsel.
  3. Hat Erlang Stil der Nachrichtenkommunikation zwischen Aufgaben übergeben.
  4. Unterstützung für transparente verteilte Nachricht zwischen den Knoten übergeben.

Nachteile:

  1. kann nicht aus einer C-Funktion ergibt, eine metamethod oder einen Iterator. (Wiederum die meisten dieser Einschränkungen gehen-away mit Lua 5.2 und luajit)
  2. Keine Einbau-preemptives Scheduling-Unterstützung. (Würde Debug-Haken verwenden)

luajit 2.0 Beta mit ConcurrentLua :

Vorteile:

  1. Leicht.
  2. Scheduler mit kooperativen Kontextwechsel.
  3. Hat Erlang Stil der Nachrichtenkommunikation zwischen Aufgaben übergeben.
  4. Unterstützung für transparente verteilte Nachricht zwischen den Knoten übergeben.
  5. Sehr schnelle JIT-Unterstützung macht Lua viel schneller als Python

Nachteile:

  1. Könnte jetzt nicht von einer C-Funktion ergeben können, zu. Dies könnte in zukünftigen Versionen unterstützt werden.
  2. Keine Einbau-preemptives Scheduling-Unterstützung. (Würde Debug-Haken verwenden)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top