Thread.SpinWait(Int32) Metodo

Definizione

Fa in modo che un thread attenda il numero di volte definito dal iterations parametro .

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

Parametri

iterations
Int32

Intero con segno a 32 bit che definisce per quanto tempo un thread deve attendere.

Commenti

Il SpinWait metodo è utile per implementare i blocchi. Le classi nel framework di .NET, ad esempio Monitor e ReaderWriterLock, usano internamente questo metodo. SpinWait essenzialmente inserisce il processore in un ciclo molto stretto, con il conteggio dei cicli specificato dal iterations parametro . La durata dell'attesa dipende quindi dalla velocità del processore.

Contrasta con il Sleep metodo . Un thread che chiama Sleep restituisce il resto della sezione corrente del tempo del processore, anche se l'intervallo specificato è zero. Se si specifica un intervallo diverso da zero, Sleep il thread viene rimosso dalla considerazione dall'utilità di pianificazione del thread fino a quando non è trascorso l'intervallo di tempo.

SpinWait in genere non è utile per le applicazioni normali. Nella maggior parte dei casi, è consigliabile usare le classi di sincronizzazione fornite da .NET Framework, ad esempio chiamare Monitor.Enter o un'istruzione che esegue il wrapping di Monitor.Enter (lock in C# o SyncLock in Visual Basic).

Caution

Nel raro caso in cui sia vantaggioso evitare un cambio di contesto, ad esempio quando si sa che una modifica dello stato è imminente, effettuare una chiamata al SpinWait metodo nel ciclo. Il codice SpinWait eseguito è progettato per evitare problemi che possono verificarsi nei computer con più processori. Ad esempio, nei computer con più processori Intel che usano Hyper-Threading tecnologia, SpinWait impedisce la fame del processore in determinate situazioni.

Si applica a