我正在寻找一个用于移动游戏客户端网络的网络库。
我目前正在使用 cocos2d-x 与 Lua 进行客户端编程。
我考虑在我的客户端网络库(TCP)中使用libuv或luv(libuv的Lua绑定)。
在游戏主循环(主线程)中的每一帧中以 UV_RUN_ONCE 或 UV_RUN_NOWAIT 模式运行libuv循环。当libuv收到网络数据时,它在游戏主线程(Lua VM运行的地方)中调用我的回调Lua函数,并且我的Lua代码解密并解码和处理消息。
我的问题是:
当网络流量上升时(当然在合理的邮件大小和金额范围内),libuv会让我的游戏主循环变慢并丢弃我的fps吗?
我需要将libuv循环放在另一个线程中,并在主线程中包含名为my Lua函数的回调延迟吗?
答案 0 :(得分:0)
是的,你可以使用UV_RUN_NOWAIT,它将在事件循环中运行任何每个排队事件,如果没有,它将只返回。
例如,UV_RUN_ONCE会阻塞,直到队列中至少有一个事件为止。