Thread.SpinWait(Int32) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
スレッドが、iterations
パラメーターで定義される時間だけ待機するようにします。
public:
static void SpinWait(int iterations);
public static void SpinWait (int iterations);
static member SpinWait : int -> unit
Public Shared Sub SpinWait (iterations As Integer)
パラメーター
- iterations
- Int32
スレッドが待機する時間を定義する 32 ビット符号付き整数。
注釈
メソッドは SpinWait 、ロックを実装する場合に便利です。 や ReaderWriterLockなどのMonitor.NET Framework内のクラスは、このメソッドを内部的に使用します。
SpinWait 基本的には、 パラメーターで指定されたループ数を使用して、プロセッサを非常にタイトなループに iterations
配置します。 したがって、待機時間はプロセッサの速度によって異なります。
これを メソッドと比較します Sleep 。 を呼び出 Sleep すスレッドは、指定された間隔が 0 の場合でも、プロセッサ時間の現在のスライスの残りの部分を生成します。 に 0 以外の間隔 Sleep を指定すると、期間が経過するまでスレッド スケジューラによるスレッドの考慮事項が削除されます。
SpinWait は通常のアプリケーションでは一般的には役に立ちません。 ほとんどの場合、.NET Frameworkによって提供される同期クラスを使用する必要があります。たとえば、 を呼び出Monitor.Enterすか、 をラップするステートメント (lock
C# では 、SyncLock
Visual Basic では ) を使用Monitor.Enterします。
注意事項
状態の変化が差し迫っていることがわかっている場合など、コンテキストの切り替えを避けるのに有利なまれなケースでは、ループ内で メソッドを SpinWait 呼び出します。 このコード SpinWait は、複数のプロセッサを搭載したコンピューターで発生する可能性がある問題を防ぐために設計されています。 たとえば、Hyper-Threading テクノロジを使用する複数の Intel プロセッサを搭載したコンピューターでは、 SpinWait 特定の状況でプロセッサの枯渇を防ぎます。
適用対象
.NET