在lua中创建延迟

我正在使用 LUA 制作 IRC 客户端,使用的是“Lua for Windows”的库。因此我使用 luasocket 作为通信模块,使用 IUP 作为 UI 组件。

我遇到的问题是当我读取 IO 时,会陷入一个循环中。我尝试使用 IUP 中的定时器,但似乎不起作用。

我在寻找一种延迟 IO 读取循环的方法。

我将读取超时设置为 0,这样可以解决问题。

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

点赞
stackoverflow用户1491
stackoverflow用户1491

你可能正在GUI线程中进行TCP套接字的阻塞读取。如果你不能及时接收到期望的数据,整个应用程序就会被锁定。可以将套接字I/O放在一个单独的线程中进行(参见Lua Lanes),或者使用非阻塞I/O(参见settimeout)。

Kepler项目是一个很好的资源,提供了关于使用Lua编写网络应用程序的指导,但它侧重于Web应用程序而不是IRC客户端。例如,Copas库使用Lua协程来处理多个TCP连接。

如果你真的只是想知道如何在Lua中创建延迟,那么lua-users wiki中的Sleep Function文章应该提供你所需的所有信息。

2010-06-17 14:37:41