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 メソッドは、ロックを実装する場合に便利です。 .NET Framework のクラス (MonitorReaderWriterLock など) は、このメソッドを内部的に使用します。 SpinWait 基本的にプロセッサは非常にタイトなループに入り、ループ数は iterations パラメーターで指定されます。 したがって、待機時間はプロセッサの速度によって異なります。

これは、 Sleep メソッドと対照的です。 Sleepを呼び出すスレッドは、指定された間隔が 0 であっても、プロセッサ時間の現在のスライスの残りの部分を生成します。 Sleepに 0 以外の間隔を指定すると、期間が経過するまでスレッド スケジューラによるスレッドの考慮事項が削除されます。

SpinWait は通常のアプリケーションでは一般的には役に立ちません。 ほとんどの場合、.NET Framework によって提供される同期クラスを使用する必要があります。たとえば、Monitor.Enter を呼び出すか、Monitor.Enter (C# では lock、Visual Basic では SyncLock) をラップするステートメントを呼び出す必要があります。

Caution

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

適用対象