如何检测和快速响应花费过长时间的Lua函数?

我正在使用Corona SDK制作一个简单的应用程序,它需要luasocket。 Corona SDK支持luasocket来进行异步http请求。

但是我想使用luasocket中的UDP。 luasocket中的UDP receive()方法是阻塞的,直到它接收到一条消息。

Corona SDK不支持LuaLanes。 因此,另一个线程中监听udp消息几乎不可能。

所以我在思考是否有任何方法/技巧/变通方法来检测并取消函数(在这种情况下是udp.receive())如果响应时间太长?

提前致谢

原文链接 https://stackoverflow.com/questions/6435560

点赞
stackoverflow用户438753
stackoverflow用户438753

你设置了 UPD 超时吗?

请参考http://w3.impa.br/~diego/software/luasocket/udp.html页面底部。

2011-06-22 09:18:07
stackoverflow用户800889
stackoverflow用户800889

是的.. 协程和事件.. http://www.lua.org/pil/9.4.html

触发一个定时器事件,每100毫秒调用一个函数。在该函数中恢复一个协程。

在协程中,您可以在循环中读取传入的数据,如果尚未完成,则进行暂停。

示例很好地解释了这一点。

祝你好运.. F.

2011-06-29 06:33:55