Condividi tramite


Thread.SpinWait(Int32) Metodo

Definizione

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.

Si applica a