2012-01-11 1 views
3

VS2008, lua 5.1 및 luabind 0.9.1을 사용하고 있습니다.다른 스레드 (루아를 C++로 임베드)에서 루아 함수를 호출해도 괜찮습니까?

C++에서 루아 함수를 호출하면 정상적으로 작동합니다.

여러 스레드가 있고 루어 기능이 각 스레드에서 호출되는 경우이 상황이 발생합니까? ONE 루아 (Lua) 상태 만 있습니다.

그런 상황에서 더 많은 루아 상태가 있어야합니까? 어느 것이 공통점입니까?

+0

몇 가지 빠른 Google 검색은 Lua VM이 스레드로부터 안전하지 않다는 것을 나타내는 것으로 보이므로 스레드 당 하나의 상태를 사용하는 것이 좋습니다. –

+0

하지만 루아 함수를 호출하면 어떨까요? 루아 함수를 호출하면 상태가 바뀔 수 있습니까? –

+0

저는 모든 VM 레지스터를 추측하고 있습니다. 호출 스택과 다른 중요한 변수는 상태에 저장됩니다.이 상태는 두 스레드가 동시에 상태를 사용하는 경우 재난의 원인이됩니다. 루아 함수의 호출을 예를 들면 다음과 같이 보호하십시오. 뮤텍스를 사용하거나 다른 상태를 사용하십시오. –

답변

4

그건 그렇지 않습니다. Lua 사용자 위키는 스레딩에 대해 좋은 page을 가지고 있습니다.

+0

이 경우 특별히 주목할만한 것은 wiki의 * Locking by Lua * 섹션입니다. 이것은 본질적으로 [GIL] (http://en.wikipedia.org/wiki/Global_Interpreter_Lock)이며, 스레드에서 많은 처리를한다면 꽤 많은 시리얼 코드로 끝납니다 ... –

관련 문제