Thread.SpinWait(Int32) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Powoduje, że wątek ma czekać liczbę razy zdefiniowaną iterations
przez parametr .
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
32-bitowa liczba całkowita z podpisem, która definiuje czas oczekiwania wątku.
Uwagi
Metoda jest przydatna SpinWait do implementowania blokad. Klasy w .NET Framework, takie jak Monitor i ReaderWriterLock, używają tej metody wewnętrznie.
SpinWait zasadniczo umieszcza procesor w bardzo ciasną pętlę z liczbą pętli określoną przez iterations
parametr . Czas trwania oczekiwania zależy zatem od szybkości procesora.
Kontrastuje to z Sleep metodą . Wątek, który wywołuje Sleep , daje resztę bieżącego wycinka czasu procesora, nawet jeśli określony interwał wynosi zero. Określenie interwału niezerowego dla Sleep usuwania wątku z rozważenia przez harmonogram wątków do momentu upływu interwału czasu.
SpinWait nie jest ogólnie przydatny w przypadku zwykłych aplikacji. W większości przypadków należy użyć klas synchronizacji udostępnianych przez .NET Framework, na przykład wywołaj lub Monitor.Enter instrukcję, która zawija Monitor.Enter (lock
w języku C# lub SyncLock
w Visual Basic).
Przestroga
W rzadkich przypadkach, gdy korzystne jest uniknięcie przełączania kontekstu, na przykład gdy wiadomo, że zmiana stanu jest nieuchronna, wywołaj metodę SpinWait w pętli. Kod SpinWait jest wykonywany w celu zapobiegania problemom, które mogą wystąpić na komputerach z wieloma procesorami. Na przykład na komputerach z wieloma procesorami Intel wykorzystującymi technologię SpinWait Hyper-Threading uniemożliwia głodowanie procesora w określonych sytuacjach.