次のコードがあります。
use Proc::Daemon;
Proc::Daemon::Init;
my $continue = 1;
$SIG{TERM} = sub { $continue = 0 };
while ($continue) {
##DO THINGS
}
このスクリプトが 7% の CPU を使用していることに気付きました。無限ループのせいだと思います。無限ループでCPUをあまり使わないようにする方法があると思います(これがイベントループの仕組みです)。どうすれば多くの CPU を使用しないようにできますか (私は眠ることができると思いますが、もっと良い方法があるかどうか疑問に思っています)。
私が行う「こと」は、本質的に非常に単純です。タイマーが期限切れになっているか、フラグが設定されているかどうかを確認します。そうである場合は、アクションを実行します。