Udostępnij za pośrednictwem


Thread.SpinWait(Int32) Metoda

Definicja

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.

Dotyczy