我需要在IOCP中使用Lua,并使用线程本地存储来存储lua_State *
。我应该在线程销毁之前使用lua_close()
销毁lua_State,但工作线程是由IOCP创建的。
问题是何时是时候致电lua_close
?
static DWORD WINAPI work_thread_proc(void* parameter){
lua_State * L = TlsGetValue(tls_lua_key);
if(NULL = L){
L=luaL_newstate();
//DO some initialze for L...
TlsSetValue(tls_lua_key,L);
}
}
//..... other place call
QueueUserWorkItem(&work_thread_proc, req, WT_EXECUTELONGFUNCTION);