sleep() 関数を呼び出す C プログラムを書いているとしましょう。たとえば、sleep(7)を呼び出すと、呼び出しスレッドは7秒間休止状態になります。
私の質問は:各プロセスがCPUに独自の量子時間を持っていることを考えると(継続的に実行されているプロセスが多いため)、スレッドが私たちの時間/時計の7秒後に目覚めますか、それとも長い時間がかかりますか?
答え1
sleep(3)
呼び出しが返されるようにする定義今後、存在するまたは後ろに指定時間:
説明する
sleep()
数秒が経過するか無視されない信号が到着するまで、呼び出しスレッドを休止状態にします。
だから我々はこれらの可能な状況を持っています
- 信号がキャッチされず、通話が中断されました。
sleep()
指定された時間より早く直ちに返却してください。 - 通話は正常に完了しましたが、システムが忙しくてしばらくの間ジョブをスケジュールできません
- 呼び出しは十分に完了し、実行キューに戻され、すぐに実行されます。
答え2
POSIXは、少なくともあなたが要求したタスクを実行するための成功し、中断のない睡眠を保証します。
http://pubs.opengroup.org/onlinepubs/009604599/functions/sleep.html
Linuxでは、1)丸め2)スケジューラがプロセス/スレッドをCPUに入れるのを待つ3)停止状態の時間のために時間がかかることがあります。 http://man7.org/linux/man-pages/man2/nanosleep.2.html