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 指定的間隔為零,呼叫 的執行緒仍會產生其目前處理器時間配量的其餘部分。 指定非零間隔, Sleep 以在經過時間間隔之前,從執行緒排程器考慮中移除執行緒。

SpinWait 通常不適用於一般應用程式。 在大部分情況下,您應該使用.NET Framework所提供的同步處理類別;例如,呼叫 Monitor.Enter 或以 C# SyncLock 或 Visual Basic) 包裝 Monitor.Enter (lock 的語句。

警告

在極少數的情況下,避免發生內容切換的好處,例如當您知道狀態變更即將發生時,請在迴圈中呼叫 SpinWait 方法。 程式碼 SpinWait 執行的設計目的是防止在具有多個處理器的電腦上發生問題。 例如,在採用多個 Intel 處理器的電腦上,採用Hyper-Threading技術, SpinWait 在某些情況下可防止處理器耗盡。

適用於