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 框架中的類別,如 MonitorReaderWriterLock,內部使用此方法。 SpinWait 本質上會讓處理器陷入一個非常緊密的迴圈,迴圈數量由 iterations 參數決定。 因此,等待的時間長短取決於處理器的速度。

與此 Sleep 形成對比。 呼叫 Sleep 執行緒會產出其目前處理器時間的剩餘切片,即使指定的區間為零。 指定非 Sleep 零區間會使該執行緒在時間區間結束前,從排程器中移除該執行緒的考量範圍。

SpinWait 一般應用中並不實用。 在大多數情況下,你應該使用 .NET Framework 提供的同步類別;例如,呼叫 Monitor.Enter 或一個封裝 Monitor.Enter(C# 中 lock,Visual Basic 中 SyncLock)。

注意事項

在極少數需要避免上下文切換有利的情況下,例如你知道狀態即將改變,請呼叫迴圈中的該 SpinWait 方法。 執行的程式碼 SpinWait 設計用來防止在多處理器電腦上可能發生的問題。 例如,在搭載多個 Intel 處理器且採用 Hyper-Threading 技術的電腦上, SpinWait 在某些情況下可防止處理器缺氧。

適用於