我使用lua作为处理应用程序中事件的脚本语言,并且我不想限制用户编写简短的处理程序-例如有人可能想让一个处理程序运行一个无限循环,而另一个处理程序将中断第一个处理程序。显然,lua不直接支持这种行为,因此我正在寻找解决方法。
首先,我想避免修改引擎。是否有可能设置一个调试 Hook ,一旦状态达到其配额,该 Hook 就会产生?从文档来看,这一点都不难,但是我不知道是否有任何警告。
第二,我可以像实际的多线程处理一样使用lua_close
终止线程吗?
最佳答案
我过去做过类似的事情。完全有可能在单独的Lua状态上进行多线程处理。一定要看一看luaL_lock()和luaL_unlock()(以及相关的设置/清除),因为毫无疑问,您需要此设置(一个简单的互斥锁可以解决问题)。
在那之后,为您的处理程序创建一个锁/等待/中断API应该是一个相当简单的问题。
关于multithreading - Lua中的抢占式多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19145911/