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 適用于實作鎖定。 .NET Framework中的類別,例如 Monitor 和 ReaderWriterLock ,會在內部使用此方法。
SpinWait 基本上,處理器會放入非常緊密的迴圈中,並使用 參數指定的 iterations
迴圈計數。 因此,等候的持續時間取決於處理器的速度。
將此與 Sleep 方法對比。 即使 Sleep 指定的間隔為零,呼叫 的執行緒仍會產生其目前處理器時間配量的其餘部分。 指定非零間隔, Sleep 以在經過時間間隔之前,從執行緒排程器考慮中移除執行緒。
SpinWait 通常不適用於一般應用程式。 在大部分情況下,您應該使用.NET Framework所提供的同步處理類別;例如,呼叫 Monitor.Enter 或以 C# SyncLock
或 Visual Basic) 包裝 Monitor.Enter (lock
的語句。
警告
在極少數的情況下,避免發生內容切換的好處,例如當您知道狀態變更即將發生時,請在迴圈中呼叫 SpinWait 方法。 程式碼 SpinWait 執行的設計目的是防止在具有多個處理器的電腦上發生問題。 例如,在採用多個 Intel 處理器的電腦上,採用Hyper-Threading技術, SpinWait 在某些情況下可防止處理器耗盡。