私は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 秒待機させるにはどうすればよいですか?