Thread.SpinWait(Int32) Método

Definición

Hace que un subproceso espere el número de veces definido por el parámetro 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)

Parámetros

iterations
Int32

Entero de 32 bits con signo que define la cantidad de tiempo de espera de un subproceso.

Comentarios

El SpinWait método es útil para implementar bloqueos. Las clases de .NET Framework, como Monitor y ReaderWriterLock, usan 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.

Compare 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. Si se especifica un intervalo distinto de cero para Sleep , el programador de subprocesos debe tener en cuenta el subproceso hasta que haya transcurrido el intervalo de tiempo.

SpinWait por lo general, no es útil para las aplicaciones ordinarias. 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).

Precaución

En el raro caso 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