Sdílet prostřednictvím


Thread.SpinWait(Int32) Metoda

Definice

Způsobí, že vlákno bude čekat kolikrát je definován parametrem 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 signoumm, které definuje, jak dlouho má vlákno čekat.

Poznámky

Metoda SpinWait je užitečná pro implementaci zámků. Třídy v rozhraní .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čky určeným parametrem iterations . Doba čekání proto závisí na rychlosti procesoru.

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

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 Framework; například voláním Monitor.Enter příkazu nebo příkazem, který zabalí Monitor.Enter (lock v jazyce C# nebo SyncLock Visual Basic).

Upozornění

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

Platí pro