Lua Script coroutine

inn*_*inn 4 lua multithreading coroutine

您好我的lua脚本需要一些帮助.我这里有一个脚本,它将运行像应用程序这样的服务器(无限循环).这里的问题是它没有执行第二个协同程序.

你能告诉我什么是错的谢谢你.

function startServer()
    print( "...Running server" )
    --run a server like application infinite loop
    os.execute( "server.exe" ) 
end
function continue()
    print("continue")
end

co = coroutine.create( startServer() )
co1 = coroutine.create( continue() )
Run Code Online (Sandbox Code Playgroud)

Ole*_*kov 7

Lua有合作多线程.线程不会自动yield切换,但必须与其他线程交换.当一个线程正在运行时,每个其他线程都在等待它完成或产生.这个示例中的第一个线程似乎正在运行server.exe,我认为,在中断之前,它永远不会完成.因此,第二个线程永远不会轮到运行.

你也运行错误的线程.在您的示例中,您根本没有运行任何线程.你执行函数,然后尝试用它的输出创建协程,这自然会失败.但是,既然你永远不会从server.exe你那里回来,你还没有注意到这个问题.之后删除这些括号startServercontinue进行修复.

  • 是.`server.exe`应该从控制台中取消,以允许`os.​​execute`返回.或者使用Windows的方法在单独的窗口中运行它,即`os.execute('cmd/c start"server"server.exe')`. (3认同)