Lua中的抢占式多线程

时间:2013-10-02 20:07:59

标签: multithreading lua

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

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

第二,我可以使用lua_close终止线程,就像在实际的多线程中一样吗?

1 个答案:

答案 0 :(得分:1)

我过去做过类似的事情。它完全可以在单独的Lua状态下进行多线程。一定要看一下luaL_lock()和luaL_unlock()(以及相关的设置/清理),因为你无疑需要这个设置(一个简单的互斥量应该可以做到)。

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