我查看了lua-users Sleep Function参考,试图找到解决睡眠问题的非忙等待解决方案,但我对其中任何一个都不满意。尽管如此,我还是尝试使用几个来在使用尾调用的函数结束时提供延迟。
通常我不会使用尾调用,但由于 lua 不会为尾调用留下堆栈,所以它适合我。
不幸的是,我看到我的处理器使用率飙升至大约 20%,并且程序一旦开始就立即变得无响应,而没有任何输出刷新。
问题(简化)如下所示:
function myFunc ()
-- do some stuff
-- lots of snazzy logic and function calls
-- heck, throw in a few prints
print "Going to sleep"
-- sleep for a bit
os.execute("sleep 10")
print "Waking up"
-- tail call
return myFunc()
end
我已经尝试过套接字选择方法,os.execute,当然还有忙等待。其中只有忙碌的等待给出了预期的行为。
这些其他非忙等待解决方案也是非阻塞的吗?也就是说,尽管有延迟,他们是否允许处理尾调用?
如何刷新输出并让函数在恢复之前等待 10 秒而不忙于等待?