2013-10-29 5 views
2

C 응용 프로그램을 가지고 있고 LUA를 스크립팅 언어로 통합하고 있습니다. Embedding LUA는 문제없이 잘 처리되었습니다.lua_pcall을 비동기로 실행합니다.

현재 C 응용 프로그램에서 2 ~ 3 개의 다른 스크립트를 동시에 실행할 수 있는지 알고 싶습니다. lua_pcall이 동기식으로 실행되고있는 것으로 나타났습니다 (따라서 실행이 완료 될 때까지 반환되지 않습니다. 스크립트

동시에 여러 스크립트를 실행하거나 적어도 lua_pcall을 비동기 적으로 실행할 수있는 방법이 있습니까? 스크립트 자체를 제어 할 수 없기 때문에 스크립트 자체에 솔루션이 필요하지 않습니다. 실행 (고객이 구성을위한 스크립트를 작성하므로 동기화 작업을 스크립트에서 수행해야한다고 말하고 싶지 않습니다.

+4

lua는 단일 스레드입니다. 다중 쓰레드가 필요하다면 여러 개의 lua 상태를 가지고 스스로를 조정해야합니다. 루아 사이드에서이 작업을 수행 할 수있는 다양한 라이브러리가 있습니다. C 측에서이 작업을 수행하려면 각각 자신이 루아 상태 인 다중 스레드를 실행하는 것보다 더 많은 작업이 필요합니다. –

+0

@EtanReisner, C "side"에서 두 개의 다른 스레드를 실행하고 각각에 대해 별도의 Lua 상태를 시작하는 것이 너무 어렵지도 않습니다. – Kamiccolo

답변

0

Eran은 다음과 같이 설명합니다. 별도의 시스템 스레드에서 신선한 lua_State (newthread에서 생성 된 것)를 아주 쉽게 실행하십시오.

전역 상태 요소 (_G, 레지스트리, 일부 내부)가 여러 스레드에서 액세스되지 않도록 기본적인 잠금 (lua_lock/lua_unlock/init/shutdown 구현)이 필요합니다.