Multithreading Lua-如何模拟;多线程;?

Multithreading Lua-如何模拟;多线程;?,multithreading,function,lua,Multithreading,Function,Lua,我有两个功能: function func1() while true do -- listen on connection end end function func2() while true do -- execute other code end end 我想“同时”运行这两个函数,同时在它们之间共享变量。我曾尝试创建一个调度程序,使这两个函数协同工作,但我想不出一种方法来安排它们快速交替执行。(func1运行一秒钟,func2运行

我有两个功能:

function func1()
   while true do
       -- listen on connection
   end
end

function func2()
   while true do
       -- execute other code
   end
end

我想“同时”运行这两个函数,同时在它们之间共享变量。我曾尝试创建一个调度程序,使这两个函数协同工作,但我想不出一种方法来安排它们快速交替执行。(func1运行一秒钟,func2运行一秒钟,func1运行一秒钟,依此类推)

Lua不支持异步多线程。它只支持协作线程。这意味着这两个“线程”必须设计为给另一个线程执行时间。这样的设计通常高度依赖于你想要完成的东西

您的示例讨论了一个线程侦听连接,另一个线程执行某些操作(或者使用该连接的数据,或者不使用该连接的数据;这并不完全清楚)。在这样的系统中,当连接没有提供新数据时,最好让
func1
调用
func2
的线程。而
func2
只有在处理完某些内容后才会将控制权返回到
func1


但是,对于协作多线程,没有一种一刀切的解决方案。

存在用于Lua的C库,它公开了多线程或多处理的方法。例如:

  • (显然(?)取决于火炬)
  • 火炬有一些
所有这些都是第三方解决方案,正如另一个答案所解释的,Lua中没有内置异步多线程功能

我认为这与你所描述的最接近。它支持线程之间通过ZeroMQ进行通信