在lua中创建延迟

时间:2010-06-17 08:52:19

标签: sockets loops lua io

我正在使用LUA创建一个IRC客户端。我正在使用“Lua for Windows”附带的库。因此,我使用luasocket进行通信,使用IUP进行UI位。

我遇到的问题是,当我读取IO时,我陷入了循环。我在IUP中尝试了计时器,但这似乎不起作用。

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

我将读取的时间设置为0并且有效。

1 个答案:

答案 0 :(得分:2)

您可能正在GUI线程内的TCP套接字上进行阻塞读取。如果您没有及时收到预期的数据,那将锁定您的整个应用程序。在单独的线程中执行套接字I / O(请参阅Lua Lanes)或使用非阻塞I / O(请参阅settimeout)。

Kepler Project是使用Lua进行网络应用程序指导的绝佳资源,但它专注于Web应用程序而非IRC客户端。例如,Copas库使用Lua coroutines来处理多个TCP连接。

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