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