msleep、mdelay / udelay:Linuxのドライバ開発では、多くの場合、遅延機能を使用しています。
mdelayは効果が遅れているが、彼らは異なっているmsleepが、と。
1)モジュール自体
mdelayはビジーウェイト関数であり、他のタスクは、プロセスを遅らせる実行することはできません。この遅延時間は正確です。どのくらいの時間は本当に待ちに多くの時間を待つ必要があります。
msleepはそれがビジーウェイトを伴わない、スリープ機能です。あなたはmsleep(10)であれば、実際には、遅延時間は、ほとんどの時間であることがより10msのよりもために、それは不確実な値の時間です。
2.)システムの場合:
mdelay()は今回のCPUリソースで使用することができない他の機能で、その結果、CPUリソースを占有します。
msleep()CPUリソースを占有しない、他のモジュールは、今回のCPUリソースで使用することができます。
遅延機能はビジーウェイト、CPU時間であり、スリープ機能しながら、プロセスの呼び出しが休止状態だったように。
3)udelay()mdelay()ndelay()の差:
udelay(); mdelay(); ndelay();基本的に、原理的には達成はビジーウェイト、ndelay mdelayあるとudelayによって導出されています。
私たちはしばしば、多くの場合、ヘッダファイルの不適切な使用によるものである関数「udelay」の暗黙的な宣言を警告出会いコンパイラを、これらの機能を実現するために使用されます。
mdelayのndelayで定義さudelayにおける*** / delay.h()、定義されたおよび/リナックス/ delay.h含む - 含む/ ASMました。
あなたは2000年より数の大きいを埋める場合udelay比較的小さな遅延に一般的に適用、あなたはより多くの2msの遅延よりも必要とされるmdelay機能を必要とするのであれば、これは間違った遅延機能だと思います。
4.)msleep、SSLEEP違い:
異なる睡眠ユニット
5)第二ユニット
ミリ秒(ミリ秒)= 0.001秒です
私たちマイクロ秒= 0.000001秒
NSナノ秒= 0.000000001秒
----------------
免責事項:この記事は元の記事CSDNのブロガーアーキテクトトレーニングキャンプ「とフォローのCC 4.0であるBY-SAの著作権契約、再現し、元のソースのリンクと、この文を添付してください。
オリジナルリンクします。https://blog.csdn.net/cbk861110/java/article/details/40747139