GNU/Linux >> Linux の 問題 >  >> Linux

Linux 上の C++ での usleep(0) の効果

技術的に 効果がないはずです。ただし、渡された値は最小値として使用されることに注意してください。 であり、絶対的なものではないため、システムは可能な限り最小の間隔を自由に使用できます。


ここで使用されている time コマンドについて指摘したかっただけです。 /usr/bin/time を使用する必要があります time だけではなく プログラムメモリ、CPU、時間統計を確認したい場合は、コマンド。フルパスなしで time を呼び出すと、組み込みの time コマンドが呼び出されます。違いを見てください。

フルパスなし:

# time -v ./a.out
-bash: -v: command not found

real    0m0.001s
user    0m0.000s
sys     0m0.001s

完全なパス:

# /usr/bin/time -v ./a.out
Command being timed: "./a.out"
User time (seconds): 0.00
System time (seconds): 0.00
Percent of CPU this job got: 0%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:10.87
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 0
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 220
Voluntary context switches: 10001
Involuntary context switches: 1
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0

man time を使用 /usr/bin/time の場合 マニュアルと help time を使用 ビルトイン時間情報用。


確認するためにソースを調べる必要がありますが、私の推測では、「効果なし」というわけではありませんが、おそらくまだ usleep(1) 未満です。 - ライブラリ呼び出しが単にその引数をチェックしてすぐに戻り、タイマー/コールバックを設定してスケジューラを呼び出すより一般的なプロセスを回避したとしても、タイトなループで測定可能な関数呼び出しのオーバーヘッドがまだあります.


Linux
  1. Linuxをより速く起動する

  2. Linux 時間コマンドの例

  3. Linuxでディレクトリサイズを取得する方法

  1. Linux での timedatectl コマンドの例

  2. Linux での uptime コマンドの例

  3. Linux プロセスの状態

  1. C、C++ で Windows または Linux を検出

  2. Linuxでファイルサイズを監視する

  3. Linux で C++ を使用してシステムの日付と時刻を設定する