问题是我的Lua服务器无法同时接受多个请求。 我尝试在其协同程序中处理每个客户端消息,但这似乎已失败。
while true do
local client = server:accept()
coroutine.resume(coroutine.create( function()
GiveMessage( client )
end ) )
end
此代码似乎实际上不会同时接受多个客户端消息。这种方法有什么问题?谢谢你的帮助。
答案 0 :(得分:4)
您将无法仅使用协同程序创建真正的同时处理 - 协程用于协作多任务处理。只有一个协同程序同时执行。
您编写的代码与直接在循环中调用GiveMessage()
没有什么不同。您需要编写一个协程调度程序,并找到一个合理的理由从GiveMessage()
获得该工作方法。
至少有三种解决方案,具体取决于您的任务细节:
答案 1 :(得分:-1)
AFAIK协程与开箱即用的luaSocket不搭配。但是你可以使用Copas。