Linux における usleep と sleep の違い: sleep 関数は、指定された秒数の間一時停止を実行するために使用され、usleep 関数は指定されたマイクロ秒数の間一時停止を実行するために使用されます。 sleep は非システム コールであり、ライブラリ関数に実装されており、alarm() を使用してアラーム時刻を設定します。usleep は、時間単位がマイクロ秒であることを除いて、sleep と同様に使用されます。
#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。
(1) sleep()------秒単位
Headファイル:
#include <windows.h> // 在VC中使用带上头文件 #include <unistd.h> // 在gcc编译器中,使用的头文件因gcc版本的不同而不同
機能: 指定した秒数の一時停止を実行
構文:
unsigned int sleep(unsigned int seconds);
sleep() はシステムコールではなく、sleep() はライブラリ内にあります関数 これは、alarm() を使用してアラーム時間を設定し、sigsuspend() を使用してシグナル SIGALARM のプロセスを一時停止することによって実装されます。
sleep() は第 2 レベルまでしか正確ではありません。 sleep() は、秒パラメータで指定された時間に達するか、シグナルによって中断されるまで、現在のプロセスを一時停止します。
#include
return: プロセスが秒パラメーターで指定された時間まで中断された場合、成功すると 0 が返されます。信号の中断がある場合、残りの秒数が返されます。
例:
#include <windows.h> #include<stdio.h> int main() { int a; a=1; printf("hello"); sleep(a); /* VC 使用Sleep*/ printf("world"); return 0; }
(2) usleep()----マイクロ秒単位
ヘッダー ファイル:
#include <unistd.h>
機能: usleep 関数は、一定期間プロセスを一時停止します。単位はマイクロ秒 (100 万分の 1 秒) です。
構文:
void usleep(int micro_seconds);
ただし、時間の単位はマイクロ秒以外です。使用方法は sleep() に似ています。また、実装も異なり、sleepはalarmで実装しているため時間単位がsですが、usleepの時間単位はus
であり、alarmでは絶対に実装されていないため、実装が異なります。 . ですが、sleep と usleep の両方が unistd.h で定義されているため、これらはすべて Linux では使用されますが、Windows では使用できません。
#include
return: プロセスが秒パラメーターで指定された時間まで中断された場合、成功すると 0 が返されます。信号の中断がある場合、残りのマイクロ秒が返されます。
戻り値: なし
内容説明: プログラムの実行を一時停止することができる関数です。パラメータ micro_seconds は、一時停止するマイクロ秒数 (us) です。
注:
この機能は Windows オペレーティング システムでは動作しません。 Linux のテスト環境で使用されます。
参照: usleep() は sleep() に似ており、一時停止されたプロセスを遅らせるために使用されます。プロセスは一時停止され、再実行キューに入れられます。
通常、遅延時間が秒単位の場合は、可能な限り sleep() 関数を使用してください。
遅延時間が数十ミリ秒 (1ms = 1000us) 以下の場合は、可能であれば usleep() 関数を使用してください。このようにして、CPU 時間を最大限に活用できます。
推奨される学習: Linux ビデオ チュートリアル
以上がLinux の usleep と sleep の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。