Qual é a vantagem do microthread de python sem pilhas do que a coroutina de Lua na implementação do State Machine para o jogo?
-
27-09-2019 - |
Pergunta
Alguma vantagem sobre a implicação de python sem pilha que a coroutina de Lua? Qual é a diferença deles?
Solução
Python e Tasklets sem pilha (não fiz nenhuma programação com python sem pilha, mas li alguns dos detalhes sobre como ele é implementado):
Prós:
- Leve na maioria das vezes.
- O Scheduler para gerenciar qual TaskLet será retomado em seguida, após o rendimento atual.
- Suporte para agendamento preventivo. (ou seja, corra para X Instruções)
- Canais para comunicação entre tasklets.
Contras:
- Às vezes, precisa de pilha C ao render a partir de um TaskLet. (ou seja, ao render de alguns retornos de chamada C)
Lua 5.1 com coroutinas simples:
Prós:
- Leve.
- As funções currume ()/rendimento () permitem que o modelo de comunicação do consumidor/produtor.
Contras:
- Nenhum agendador interno. Você precisa gerenciar a retomada e o rendimento de coroutinas.
- Não é possível render a partir de uma função C, um metametódio ou um iterador. (Lua 5.2 removerá a maioria dessas restrições, o Luajit 1.1 fornece comutação leve da pilha C para render de qualquer lugar)
- Nenhum suporte de agendamento preventivo integrado. (teria que usar ganchos de depuração)
Lua 5.1 com Concurrentlua:
Prós:
- Leve.
- Agendador com comutação cooperativa de contexto.
- Tem o estilo de Erlang de comunicação que passa de mensagens entre tarefas.
- Suporte para mensagem distribuída transparente que passa entre nós.
Contras:
- Não é possível render a partir de uma função C, um metametódio ou um iterador. (Novamente, a maioria dessas restrições desperta com Lua 5.2 e Luajit)
- Nenhum suporte de agendamento preventivo integrado. (teria que usar ganchos de depuração)
Luajit 2.0 beta com Concurrentlua:
Prós:
- Leve.
- Agendador com comutação cooperativa de contexto.
- Tem o estilo de Erlang de comunicação que passa de mensagens entre tarefas.
- Suporte para mensagem distribuída transparente que passa entre nós.
- O suporte JIT muito rápido faz Lua muito mais rápido que Python
Contras:
- Pode não ser capaz de render a partir de uma função C agora. Isso pode ser apoiado em lançamentos futuros.
- Nenhum suporte de agendamento preventivo integrado. (teria que usar ganchos de depuração)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow