Thread.SpinWait(Int32) Método

Definición

Hace que un subproceso espere el número de veces definidas por el iterations parámetro .

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

Parámetros

iterations
Int32

Entero de 32 bits con signo que define cuánto tiempo debe esperar un subproceso.

Comentarios

El SpinWait método es útil para implementar bloqueos. Las clases de .NET Framework, como Monitor y ReaderWriterLock, usen este método internamente. SpinWait básicamente coloca el procesador en un bucle muy ajustado, con el recuento de bucles especificado por el iterations parámetro . Por lo tanto, la duración de la espera depende de la velocidad del procesador.

Contraste esto con el Sleep método . Un subproceso que llama produce Sleep el resto de su segmento actual de tiempo de procesador, incluso si el intervalo especificado es cero. Al especificar un intervalo distinto de cero para Sleep , el programador de subprocesos no tiene en cuenta el subproceso hasta que haya transcurrido el intervalo de tiempo.

SpinWait por lo general, no es útil para las aplicaciones normales. En la mayoría de los casos, debe usar las clases de sincronización proporcionadas por .NET Framework; por ejemplo, llame a Monitor.Enter o una instrucción que encapsula Monitor.Enter (lock en C# o SyncLock en Visual Basic).

Caution

En el caso poco frecuente en el que es ventajoso evitar un cambio de contexto, como cuando sabe que un cambio de estado es inminente, realice una llamada al método en el SpinWait bucle. El código SpinWait se ejecuta está diseñado para evitar problemas que pueden producirse en equipos con varios procesadores. Por ejemplo, en equipos con varios procesadores Intel que emplean tecnología Hyper-Threading, SpinWait evita el colapso del procesador en determinadas situaciones.

Se aplica a