我已經瀏覽了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秒後才能恢復而不需要等待?
這不是尾巴呼叫。你需要'返回myfunc()'。 –
我不確定我完全理解這裏的目標。這裏的目標是什麼?有什麼問題? –
@EtanReisner它是一個運行24-7的腳本的控制循環。 – Stephen