Thread.SpinWait(Int32) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Determina che un thread rimanga in attesa il numero di volte definito dal parametro 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)
Parametri
- iterations
- Int32
Intero con segno a 32 bit che definisce la durata dell'attesa di un thread.
Commenti
Il SpinWait metodo è utile per l'implementazione dei blocchi. Le classi in .NET Framework, ad esempio Monitor e ReaderWriterLock, usano questo metodo internamente.
SpinWait essenzialmente inserisce il processore in un ciclo molto stretto, con il numero di 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 per 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 Monitor.Enter wrapping di (lock
in C# o SyncLock
in Visual Basic).
Attenzione
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.