creación de un único lua_State
por hilo es una buena solución para tener múltiples hilos de ejecución Lua. Sin embargo, esos estados son muy separados. En particular, es difícil comunicarse de forma segura entre ellos, ya que la API de Lua solo es segura para subprocesos siempre que se acceda a cada lua_State
desde un solo subproceso a la vez. (Bueno, a menos lua_lock
y lua_unlock
se implementan como un mutex adecuado, que no están en el valor por defecto obra del núcleo lua.)
Si ese nivel de aislamiento no es aceptable, entonces usted necesita para investigar uno de los varios mecanismos para permitir que las instancias de Lua jueguen bien con otros en un proceso enhebrado.
Mi elección favorita es Lua Lanes que proporciona múltiples hilos junto con un mecanismo para pasar mensajes y compartir valores entre ellos de una manera segura para hilos. Los valores de la mayoría de los tipos de Lua (incluido userdata
con un pequeño soporte lateral en C de la biblioteca que lo utiliza) se pueden pasar de manera segura y eficiente de un carril a otro. Existen
Otros mecanismos, y un buen punto de partida para la mayoría de ellos está en el usuario de wiki page on MultiTaksing Lua.