Qual è il vantaggio di stack inferiore MicroThread di Python di coroutine di Lua nell'attuazione macchina dello Stato per il gioco?

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

Domanda

Ogni vantaggio sulla pila-meno pitone implentation di coroutine di Lua? Qual è la differenza di loro?

È stato utile?

Soluzione

stackless pitone e tasklets (non ho fatto alcuna programmazione con Python stackless, ma ho letto alcuni dei dettagli su come viene attuata):

Pro:

  1. Leggero maggior parte del tempo.
  2. ha scheduler per gestire che tasklet get Resume Next dopo gli attuali rendimenti uno.
  3. Supporto per preventiva pianificazione. (Vale a dire di esecuzione per le istruzioni X)
  4. I canali per la comunicazione tra tasklets.

Contro:

  1. A volte hanno bisogno di C-stack quando cedere da un tasklet. (Cioè quando cedevole da alcuni callback C)

Lua 5.1 con coroutine pianura:

Pro:

  1. leggero.
  2. funzioni
  3. resume () / rendimento () permettono modello di consumo / produttore della comunicazione.

Contro:

  1. Nessun programmatore incorporato. Devi gestire riprendere e cedere coroutine.
  2. non può cedere da una funzione C, un metamethod, o di un iteratore. (Lua 5.2 rimuoverà la maggior parte di queste restrizioni, LuaJIT 1.1 fornisce leggero commutazione c-stack ottenendo ovunque)
  3. Nessun supporto integrato Preemptive Pianificazione. (Avrebbe dovuto usare i ganci di debug)

ConcurrentLua :

Pro:

  1. leggero.
  2. Scheduler con commutazione contesto cooperativo.
  3. ha stile Erlang di message passing comunicazione tra le attività.
  4. Supporto per il messaggio distribuito trasparente che passa tra i nodi.

Contro:

  1. non può cedere da una funzione C, un metamethod, o di un iteratore. (Ancora una volta la maggior parte di queste restrizioni vanno-via con Lua 5.2 e LuaJIT)
  2. Nessun supporto integrato Preemptive Pianificazione. (Avrebbe dovuto usare i ganci di debug)
2.0 Beta

ConcurrentLua :

Pro:

  1. leggero.
  2. Scheduler con commutazione contesto cooperativo.
  3. ha stile Erlang di message passing comunicazione tra le attività.
  4. Supporto per il messaggio distribuito trasparente che passa tra i nodi.
  5. Supporto JIT molto veloce rende Lua molto più veloce di Python

Contro:

  1. non potrebbe essere in grado di produrre da una funzione C al momento. Questo potrebbe essere supportato nelle versioni future.
  2. Nessun supporto integrato Preemptive Pianificazione. (Avrebbe dovuto usare i ganci di debug)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top