Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

Thread.SpinWait (Método)

Hace que un subproceso espere durante el período de tiempo 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
Tipo: System.Int32
Entero de 32 bits con signo que define el período de tiempo durante el que un subproceso va a tener que esperar.

El método SpinWait 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, donde el parámetro iterations especifica el recuento del bucle. La duración de la espera depende, por lo tanto, de la velocidad del procesador.

Compare esto con el método Sleep. Un subproceso que llama a Sleep genera el resto del tiempo de procesador de su segmento actual, aun cuando el intervalo especificado es cero. Si se especifica un intervalo distinto de cero para Sleep, el programador de subprocesos no tendrá en cuenta el 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, debería utilizar las clases de sincronización proporcionadas por .NET Framework; por ejemplo, llame a Monitor.Enter o a una instrucción que contenga Monitor.Enter (lock en C# o SyncLock en Visual Basic).

Nota de precauciónPrecaució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, llame al método SpinWait en su bucle. El código que ejecuta SpinWait está diseñado para evitar problemas que pueden producirse en equipos con varios procesadores. Por ejemplo, en equipos con varios procesadores Intel que emplean la tecnología Hyper-Threading, SpinWait evita la inanición del procesador en determinadas situaciones.

NotaNota

El atributo HostProtectionAttribute aplicado a este tipo o miembro tiene el valor de propiedad Resources siguiente: Synchronization | ExternalThreading. El atributo HostProtectionAttribute no afecta a las aplicaciones de escritorio (que normalmente se inician haciendo doble clic en un icono, escribiendo un comando o introduciendo una dirección URL en el explorador). Para obtener más información, vea la clase HostProtectionAttribute o Programación en SQL Server y atributos de protección de host.

.NET Framework

Compatible con: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft