Thread.SpinWait(Int32) メソッド

定義

スレッドが、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すか、 をラップするステートメント (lockC# では 、SyncLockVisual Basic では ) を使用Monitor.Enterします。

注意事項

状態の変化が差し迫っていることがわかっている場合など、コンテキストの切り替えを避けるのに有利なまれなケースでは、ループ内で メソッドを SpinWait 呼び出します。 このコード SpinWait は、複数のプロセッサを搭載したコンピューターで発生する可能性がある問題を防ぐために設計されています。 たとえば、Hyper-Threading テクノロジを使用する複数の Intel プロセッサを搭載したコンピューターでは、 SpinWait 特定の状況でプロセッサの枯渇を防ぎます。

適用対象