Thread.SpinWait(Int32) Metoda

Definicja

Powoduje, że wątek czeka na liczbę razy zdefiniowanych przez iterations 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 ze znakiem, 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 ścisłej pętli z liczbą pętli określoną przez iterations parametr . Czas trwania oczekiwania zależy zatem od szybkości procesora.

Porównaj to z Sleep metodą . Wątek, który wywołuje Sleep , daje resztę bieżącego fragmentu czasu procesora, nawet jeśli określony interwał wynosi zero. Określenie interwału niezerowego dla Sleep usunięcia wątku z uwagi przez harmonogram wątku do czasu upływu interwału czasu.

SpinWait nie jest ogólnie przydatna 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łać Monitor.Enter lub instrukcję, która opakowuje Monitor.Enter (lock w języku C# lub SyncLock w Visual Basic).

Caution

W rzadkich przypadkach, gdy korzystne jest uniknięcie przełączenia kontekstu, na przykład gdy wiadomo, że zmiana stanu jest nieuchronna, wywołaj SpinWait metodę 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 zapobiega głodu procesora w niektórych sytuacjach.

Dotyczy