Thread.SpinWait(Int32) Método

Definición

Hace que un subproceso espere el número de veces definido por el parámetro iterations.Causes a thread to wait the number of times defined by the iterations parameter.

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.A 32-bit signed integer that defines how long a thread is to wait.

Comentarios

El método SpinWait es útil para implementar bloqueos.The SpinWait method is useful for implementing locks. Las clases del .NET Framework, como Monitor y ReaderWriterLock, utilizan este método internamente.Classes in the .NET Framework, such as Monitor and ReaderWriterLock, use this method internally. SpinWait básicamente coloca el procesador en un bucle muy estrecho, con el número de bucles especificado por el parámetro iterations.SpinWait essentially puts the processor into a very tight loop, with the loop count specified by the iterations parameter. Por lo tanto, la duración de la espera depende de la velocidad del procesador.The duration of the wait therefore depends on the speed of the processor.

Compare esto con el método Sleep.Contrast this with the Sleep method. Un subproceso que llama a Sleep produce el resto de su segmento actual de tiempo de procesador, aunque el intervalo especificado sea cero.A thread that calls Sleep yields the rest of its current slice of processor time, even if the specified interval is zero. Si se especifica un intervalo distinto de cero para Sleep, se quita el subproceso del programador de subprocesos hasta que haya transcurrido el intervalo de tiempo.Specifying a non-zero interval for Sleep removes the thread from consideration by the thread scheduler until the time interval has elapsed.

SpinWait no suele ser útil para las aplicaciones normales.SpinWait is not generally useful for ordinary applications. En la mayoría de los casos, se deben usar las clases de sincronización proporcionadas por el .NET Framework; por ejemplo, llame a Monitor.Enter o a una instrucción que incluya Monitor.Enter (lock C# en o SyncLock en Visual Basic).In most cases, you should use the synchronization classes provided by the .NET Framework; for example, call Monitor.Enter or a statement that wraps Monitor.Enter (lock in C# or SyncLock in Visual Basic).

Precaución

En el caso excepcional en el que resulta ventajoso evitar un cambio de contexto, como cuando sabe que un cambio de estado es inminente, realice una llamada al método SpinWait en el bucle.In the rare case where it is advantageous to avoid a context switch, such as when you know that a state change is imminent, make a call to the SpinWait method in your loop. El código SpinWait se ejecuta está diseñado para evitar problemas que pueden producirse en equipos con varios procesadores.The code SpinWait executes is designed to prevent problems that can occur on computers with multiple processors. Por ejemplo, en equipos con varios procesadores Intel que emplean la tecnología Hyper-Threading, SpinWait evita el colapso del procesador en determinadas situaciones.For example, on computers with multiple Intel processors employing Hyper-Threading technology, SpinWait prevents processor starvation in certain situations.

Se aplica a