multithreading - Lua中的抢占式多线程

标签 multithreading lua

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

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

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

最佳答案

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

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

关于multithreading - Lua中的抢占式多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19145911/

相关文章:

python,多线程,在公共(public)文件上使用 pandas "to_csv"安全吗?

java - 为什么 Akka 保留所有这些线程?

lua - Lua 中的独家模式匹配

file-io - 在 Lua 中逐行读取文件

xml - 用于解析 XML 的 Lua 库/代码

c - 如何创建Lua模块的dll

Java 线程 : According to sun there are only four stages in thread life cycle

c++ - 让预定义数量的线程计算更大数量的任务

c++ - 使用简单程序的慢速多线程

lua - 采购 nvim.init 不采购所需的 Lua 文件