Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Método Thread.SpinWait (Int32)

 

Publicado: octubre de 2016

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

Espacio de nombres:   System.Threading
Ensamblado:  mscorlib (en mscorlib.dll)

[HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true, 
	ExternalThreading = true)]
public static void SpinWait(
	int iterations
)

Parámetros

iterations
Type: System.Int32

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

El SpinWait método resulta útil para implementar bloqueos. Las clases de .NET Framework, como Monitor y ReaderWriterLock, utilizan este método internamente. SpinWait coloca esencialmente el procesador en un bucle muy ajustado, con el recuento del bucle especificado por el iterations parámetro. El tiempo de espera, por tanto, depende de la velocidad del procesador.

Compare esto con el Sleep método. Un subproceso que llama Sleep produce el resto de su segmento actual de tiempo de procesador, incluso si el intervalo especificado es cero. Especifica un intervalo distinto de cero para Sleep quita el subproceso de examen por el programador del subproceso hasta que haya transcurrido el intervalo de tiempo.

SpinWait no suele ser útil para las aplicaciones comunes. En la mayoría de los casos, debe utilizar las clases de sincronización proporcionadas por .NET Framework; Por ejemplo, llamar a Monitor.Enter o una instrucción que ajusta Monitor.Enter (lock en C# o SyncLock en Visual Basic).

System_CAPS_cautionPrecaución

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

.NET Framework
Disponible desde 1.1
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Volver al principio
Mostrar: