Lua 中的抢占式多线程



我使用 lua 作为脚本语言来处理应用程序中的事件,我不想限制用户编写短处理程序 - 例如,有人可能希望让一个处理程序运行无限循环,而另一个处理程序会中断第一个处理程序。显然,lua 并不直接支持这种行为,所以我正在寻找解决方法。

首先,我想避免修改引擎。是否可以设置一个调试钩子,一旦状态达到其配额就会生成?从文档来看,这应该一点也不难,但我不知道这是否有任何警告。

其次,我是否可以像在实际多线程中那样使用 lua_close 来终止线程?

我过去做过类似的事情。完全可以在单独的Lua状态上进行多线程处理。请务必查看luaL_lock()和luaL_unlock()(以及相关的设置/清理),因为您无疑需要此设置(简单的互斥锁应该可以解决问题)。

之后,为您的处理程序创建锁定/等待/中断 API 应该是一个相当简单的事情。

最新更新