2

次のコードがあります。

use Proc::Daemon;

Proc::Daemon::Init;
my $continue = 1;
$SIG{TERM} = sub { $continue = 0 };

while ($continue) {
     ##DO THINGS
}

このスクリプトが 7% の CPU を使用していることに気付きました。無限ループのせいだと思います。無限ループでCPUをあまり使わないようにする方法があると思います(これがイベントループの仕組みです)。どうすれば多くの CPU を使用しないようにできますか (私は眠ることができると思いますが、もっと良い方法があるかどうか疑問に思っています)。

私が行う「こと」は、本質的に非常に単純です。タイマーが期限切れになっているか、フラグが設定されているかどうかを確認します。そうである場合は、アクションを実行します。

4

2 に答える 2

2

http://perldoc.perl.org/POSIX.htmlを参照して、/nice/ を検索してください。

良い

これは、現在のプロセスのスケジューリング設定を変更する C 関数の nice() に似ています。正の引数はより礼儀正しいプロセスを意味し、負の値はより必要なプロセスを意味します。通常のユーザー プロセスは、より礼儀正しくなります。

#!/usr/bin/env perl

use strict;
use warnings;

use POSIX;

POSIX::nice( 19 );
于 2013-07-09T16:48:25.413 に答える