Thread.SpinWait(Int32) Methode

Definition

Veranlasst, dass ein Thread so oft wartet, wie vom iterations-Parameter definiert.

public:
 static void SpinWait(int iterations);
public static void SpinWait (int iterations);
static member SpinWait : int -> unit
Public Shared Sub SpinWait (iterations As Integer)

Parameter

iterations
Int32

Eine 32-Bit-Ganzzahl mit Vorzeichen, die den Zeitraum definiert, den ein Thread warten soll.

Hinweise

Die SpinWait -Methode ist nützlich für die Implementierung von Sperren. Klassen im .NET Framework, zMonitor. B. und ReaderWriterLock, verwenden diese Methode intern. SpinWait Im Wesentlichen wird der Prozessor in eine sehr enge Schleife versetzt, wobei die Schleifenanzahl durch den iterations Parameter angegeben wird. Die Dauer der Wartezeit hängt daher von der Geschwindigkeit des Prozessors ab.

Vergleichen Sie dies mit der Sleep -Methode. Ein Thread, der aufruft Sleep , ergibt den Rest des aktuellen Slices der Prozessorzeit, auch wenn das angegebene Intervall 0 ist. Wenn Sie ein Intervall ungleich 0 für angeben Sleep , wird der Thread von der Berücksichtigung durch den Threadplaner entfernt, bis das Zeitintervall abgelaufen ist.

SpinWait ist für gewöhnliche Anwendungen nicht allgemein nützlich. In den meisten Fällen sollten Sie die vom .NET Framework bereitgestellten Synchronisierungsklassen Monitor.Enter verwenden, z. B. aufruf Monitor.Enter oder eine Anweisung, die umschließt (lock in C# oder SyncLock in Visual Basic).

Achtung

In dem seltenen Fall, in dem es vorteilhaft ist, einen Kontextwechsel zu vermeiden, z. B. wenn Sie wissen, dass eine Zustandsänderung unmittelbar bevorsteht, rufen Sie die SpinWait -Methode in Ihrer Schleife auf. Der Code SpinWait wird ausgeführt, um Probleme zu verhindern, die auf Computern mit mehreren Prozessoren auftreten können. Auf Computern mit mehreren Intel-Prozessoren, die Hyper-Threading Technologie verwenden, SpinWait verhindert beispielsweise in bestimmten Situationen Prozessormangel.

Gilt für: