我正在使用LUA创建一个IRC客户端。我正在使用“Lua for Windows”附带的库。因此,我使用luasocket进行通信,使用IUP进行UI位。
我遇到的问题是,当我读取IO时,我陷入了循环。我在IUP中尝试了计时器,但这似乎不起作用。
我正在寻找延迟IO读取循环的方法。
我将读取的时间设置为0并且有效。
答案 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文章应该提供您需要的所有信息。