Thread.SpinWait(Int32) Metod

Definition

Gör att en tråd väntar på det antal gånger som definierats av parametern iterations .

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

Parametrar

iterations
Int32

Ett 32-bitars signerat heltal som definierar hur länge en tråd ska vänta.

Kommentarer

Metoden SpinWait är användbar för att implementera lås. Klasser i .NET Framework, till exempel Monitor och ReaderWriterLock, använder den här metoden internt. SpinWait placerar i princip processorn i en mycket snäv loop, med loopantalet som anges av parametern iterations . Väntetidens varaktighet beror därför på processorns hastighet.

Jämför detta med Sleep metoden. En tråd som anropar Sleep ger resten av den aktuella delen av processortiden, även om det angivna intervallet är noll. Om du anger ett intervall som inte är noll för Sleep tas tråden bort från övervägande av trådschemaläggaren tills tidsintervallet har förflutit.

SpinWait är vanligtvis inte användbart för vanliga program. I de flesta fall bör du använda de synkroniseringsklasser som tillhandahålls av .NET Framework. Anropa till exempel Monitor.Enter eller en instruktion som omsluter Monitor.Enter (lock i C# eller SyncLock i Visual Basic).

Caution

I det sällsynta fall där det är fördelaktigt att undvika en kontextväxling, till exempel när du vet att en tillståndsändring är nära förestående, gör du ett anrop till SpinWait metoden i din loop. Koden SpinWait körs för att förhindra problem som kan uppstå på datorer med flera processorer. På datorer med flera Intel-processorer som använder Hyper-Threading teknik SpinWait förhindrar till exempel processorsvält i vissa situationer.

Gäller för