Thread.SpinWait(Int32) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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.