アプリケーションのコードを読んでいて、何かが気になりました。コードは:usleep(6*1000*1000)
でした。読みやすさの問題でこの形式を使用していることを理解しています。
sleep
とusleep
の両方がnanosleep
関数を使用していると思うので、私の質問は、まったく同じことを行うsleep(6)を使用しないのはなぜですか(つまり、 6秒)? usleep
を使用すると、パフォーマンスが向上しますか? usleep
はもっと「ジェネリック」ですか?
睡眠も睡眠もナノスリープ機能を使っていると思いますが、
彼らはそうするかもしれないし、しないかもしれない。私は、その仮定に対するCおよびPOSIX標準の正当性を認識していません。
だから私の質問は:なぜまったく同じことをするsleep(6)を使用しないのですか(つまり:6秒間スリープします)? usleepを使用すると、パフォーマンスが向上しますか? usleepはもっと「ジェネリック」ですか?
sleep()
関数はAT&T Unixバージョン7で作成されました。usleep()
関数はBSD4.3で作成されました。 POSIXは両方から引き出された機能の組み合わせを標準化していますが、2つのうち1つしか利用できない可能性があり、どちらがUnixの特定のフレーバーの機能であったかがありました。
現在、usleep()
は廃止され、POSIXから削除されました。それはまだ広くサポートされていますが、新しいコードでは代わりにnanosleep()
(またはsleep()
)を使用する必要があります。
スリープへの引数は秒、usleepへの引数はマイクロ秒です。それ以外は同じだと思います。
sleep($ n)== usleep($ n * 1000000)usleep(25000)は0.025秒間のみスリープします。