Quel est l'avantage de pile moins MicroThread de Python que la coroutine de Lua dans la mise en œuvre de la machine d'état pour le jeu?

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

Question

Tout avantage sur la mise en œuvre de python stackless que Lua coroutine? Quelle est la différence entre eux?

Était-ce utile?

La solution

python stackless et tasklets (je ne l'ai pas fait de la programmation avec Python stackless, mais j'ai lu quelques-uns des détails sur la façon dont il est mis en œuvre):

Avantages:

  1. Lightweight la plupart du temps.
  2. Est-ce planificateur pour gérer ce qui tasklet get reprendre ensuite après l'actuel rendements.
  3. Prise en charge préemptif planification. (À savoir l'exécution des instructions X)
  4. canaux de communication entre tasklets.

Moins:

  1. Parfois besoin C-pile lorsque rendement d'un tasklet. (À savoir lorsque rendement de quelques rappels C)

Lua 5.1 avec coroutines simples:

Avantages:

  1. Léger.
  2. CV () / rendement () fonctions permettent modèle consommateur / producteur de communication.

Moins:

  1. Pas de programmateur intégré. Vous devez gérer la reprise et rendement coroutines.
  2. Impossible de produire à partir d'une fonction C, un métaméthode ou un itérateur. (Lua 5.2 supprime la plupart de ces restrictions, luajit 1.1 fournit une commutation c-pile légère pour produire partout)
  3. Non préemptif support intégré de planification. (Devrait utiliser des crochets de débogage)

ConcurrentLua :

Avantages:

  1. Léger.
  2. Scheduler avec changement de contexte coopératif.
  3. a un style Erlang de la communication entre les tâches de transmission de messages.
  4. Support pour le message distribué transparent qui passe entre les nœuds.

Moins:

  1. Impossible de produire à partir d'une fonction C, un métaméthode ou un itérateur. (Encore une fois la plupart de ces restrictions vont à emporter avec Lua 5.2 et luajit)
  2. Non préemptif support intégré de planification. (Devrait utiliser des crochets de débogage)

luajit 2.0 Beta avec ConcurrentLua :

Avantages:

  1. Léger.
  2. Scheduler avec changement de contexte coopératif.
  3. a un style Erlang de la communication entre les tâches de transmission de messages.
  4. Support pour le message distribué transparent qui passe entre les nœuds.
  5. Très rapide soutien JIT fait Lua beaucoup plus rapide que Python

Moins:

  1. pourrait ne pas être en mesure de produire à partir d'une fonction C en ce moment. Cela pourrait être pris en charge dans les versions ultérieures.
  2. Non préemptif support intégré de planification. (Devrait utiliser des crochets de débogage)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top