Thread.SpinWait(Int32) Methode

Definition

Veranlasst, dass ein Thread so oft wartet, wie vom iterations-Parameter definiert.Causes a thread to wait the number of times defined by the iterations parameter.

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.A 32-bit signed integer that defines how long a thread is to wait.

Hinweise

Die- SpinWait Methode ist nützlich für die Implementierung von Sperren.The SpinWait method is useful for implementing locks. Klassen im .NET Framework, z. b. Monitor und ReaderWriterLock , verwenden diese Methode intern.Classes in the .NET Framework, such as Monitor and ReaderWriterLock, use this method internally. SpinWait Legt den Prozessor im Wesentlichen in eine sehr enge Schleife, wobei die Schleifen Anzahl durch den-Parameter angegeben wird iterations .SpinWait essentially puts the processor into a very tight loop, with the loop count specified by the iterations parameter. Die Dauer der Wartezeit hängt daher von der Geschwindigkeit des Prozessors ab.The duration of the wait therefore depends on the speed of the processor.

Vergleichen Sie dies mit der- Sleep Methode.Contrast this with the Sleep method. Ein Thread, Sleep der aufruft, liefert den Rest seines aktuellen Slice der Prozessorzeit, auch wenn das angegebene Intervall 0 (null) ist.A thread that calls Sleep yields the rest of its current slice of processor time, even if the specified interval is zero. Wenn Sie ein Intervall ungleich 0 (null) für angeben, Sleep wird der Thread Zeitplaner von der Überlegung bis zum verstrichenen Zeitintervall entfernt.Specifying a non-zero interval for Sleep removes the thread from consideration by the thread scheduler until the time interval has elapsed.

SpinWait ist im Allgemeinen nicht für normale Anwendungen nützlich.SpinWait is not generally useful for ordinary applications. In den meisten Fällen sollten Sie die Synchronisierungs Klassen verwenden, die vom .NET Framework bereitgestellt werden. Beispielsweise ruft Monitor.Enter oder eine-Anweisung auf, die umschließt Monitor.Enter ( lock in c# oder SyncLock in Visual Basic).In most cases, you should use the synchronization classes provided by the .NET Framework; for example, call Monitor.Enter or a statement that wraps Monitor.Enter (lock in C# or SyncLock in Visual Basic).

Achtung

In den seltenen Fällen, in denen es vorteilhaft ist, einen Kontextwechsel zu vermeiden, z. b. Wenn Sie wissen, dass eine Zustandsänderung bevorstehend ist, müssen Sie die-Methode in der-Schleife aufzurufen SpinWait .In the rare case where it is advantageous to avoid a context switch, such as when you know that a state change is imminent, make a call to the SpinWait method in your loop. Der Code SpinWait wird ausgeführt, um Probleme zu vermeiden, die auf Computern mit mehreren Prozessoren auftreten können.The code SpinWait executes is designed to prevent problems that can occur on computers with multiple processors. Beispielsweise verhindert auf Computern mit mehreren Intel-Prozessoren, die Hyperthreading Technologie verwenden, SpinWait in bestimmten Situationen den Prozessor Hunger.For example, on computers with multiple Intel processors employing Hyper-Threading technology, SpinWait prevents processor starvation in certain situations.

Gilt für: