나는 큰 문제는 있지만 아마 간단한 것에서 내 머리카락을 꺼냈다.QT 스레드의 루아 스크립트
QT에서 서버 응용 프로그램을 개발하고 있습니다. 이 서버는 특정 및 독점 이더넷 제품과의 TCP 연결 및 대화 상자를 허용합니다.
제품이이 서버에서 호출 될 때마다 새 TCP 연결로 새 스레드가 만들어지고 "일반적인"요청으로 대화 상자가 시작됩니다.
이 대화 상자의 특정 단계에서 스레드는 프로세스를 계속 진행하기 위해 Lua 스크립트를 실행해야합니다. 일반적인 절차가 아닌 각 제품에 대한 특정 스크립트입니다. 내가 루아 스크립트를 실행하면
, 나는 Thread 클래스 (현재의 thread)의 방법을 사용해야합니다
이
내 문제입니다. Lua 스크립트에서 사용할 수있는 C 함수의 Extern "C"선언으로 인해 현재 스레드의 메서드를 호출 할 수 없습니다.이 교환의 구조를 프로그래밍하는 방법 (또는 그 원리)을 볼 방법이 없기 때문에 : - 스레드는 프로토콜에 따라 IP에 데이터를 보내는 N 개의 메소드를 가지고 있습니다.이 메소드는 mythread :: CClass_fn_X()라고 부릅니다. - 루아에 등록 된 함수 C는 LUA_FN_X()를 호출합니다. 이것은 그냥 루아에서 계산 된 매개 변수와 CClass_fn_X()를 호출하는 게이트웨이입니다) LUA_FN_X()에있는 경우나는 "이 -> CClass_fn_X()"하고 싶지, C 루아 기능은 참조가 없기 때문에 나는 할 수 없어 스레드의 "this".
지난 며칠 동안 여러 가지 시도를 해본 결과 문제의 해결책 (또는 단순히 모든 해결책)을 찾을 수 없습니다.
제발 도와주세요, 나는 코드를 요구하지 않지만, 단지 그것을하는 원리입니다.
또한 Lua 인터프리터는 안전합니까? 다른 스레드에서 루아 스크립트를 개별적으로 실행할 수 있습니까?