Thread.SpinWait(Int32) Metoda

Definice

Způsobí, že vlákno počká na kolikrát definovaný parametr 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)

Parametry

iterations
Int32

32bitové celé číslo se signy, které definuje, jak dlouho má vlákno čekat.

Poznámky

Metoda SpinWait je užitečná pro implementaci zámků. Třídy v .NET Framework, například Monitor a ReaderWriterLock, používají tuto metodu interně. SpinWait v podstatě umístí procesor do velmi těsné smyčky s počtem smyček určeným parametrem iterations . Doba čekání proto závisí na rychlosti procesoru.

Porovnejte to s metodou Sleep . Vlákno, které volá Sleep , poskytuje zbytek aktuálního řezu času procesoru, i když zadaný interval je nula. Zadáním nenulového intervalu odeberete Sleep vlákno z hlediska plánovače vláken, dokud časový interval neuplyne.

SpinWait není obecně užitečná pro běžné aplikace. Ve většině případů byste měli použít synchronizační třídy poskytované rozhraním .NET; například volání Monitor.Enter nebo příkazu, který zabalí Monitor.Enter (lock v jazyce C# nebo SyncLock v Visual Basic).

Caution

Ve výjimečných případech, kdy je výhodné se vyhnout přepnutí kontextu, například když víte, že změna stavu je bezprostřední, zavolejte metodu SpinWait ve smyčce. SpinWait Kód je navržený tak, aby zabránil problémům, ke kterým může dojít na počítačích s více procesory. Například na počítačích s více procesory Intel, které využívají technologii Hyper-Threading, SpinWait zabraňuje hladovění procesoru v určitých situacích.

Platí pro