SpinLockSpinLock

La estructura SpinLock es un primitivo de sincronización de exclusión mutua y de bajo nivel que itera mientras espera a que se adquiera un bloqueo.The SpinLock structure is a low-level, mutual-exclusion synchronization primitive that spins while it waits to acquire a lock. En los equipos con varios núcleos, cuando se prevea que los tiempos de espera van ser breves y si la contención es mínima, SpinLock puede funcionar mejor que otros tipos de bloqueos.On multicore computers, when wait times are expected to be short and when contention is minimal, SpinLock can perform better than other kinds of locks. Sin embargo, se recomienda usar SpinLock solo cuando determine mediante la generación de perfiles que el método System.Threading.Monitor o los métodos Interlocked reducen significativamente el rendimiento del programa.However, we recommend that you use SpinLock only when you determine by profiling that the System.Threading.Monitor method or the Interlocked methods are significantly slowing the performance of your program.

SpinLock puede generar el intervalo de tiempo del subproceso incluso si aún no ha adquirido el bloqueo.SpinLock may yield the time slice of the thread even if it has not yet acquired the lock. Esto se hace para evitar la inversión de prioridades del subproceso y para permitir que el recolector de elementos no utilizados progrese.It does this to avoid thread-priority inversion, and to enable the garbage collector to make progress. Cuando se usa SpinLock, asegúrese de que ningún subproceso mantenga el bloqueo durante más de un intervalo de tiempo muy breve y que ningún subproceso puede bloquearse mientras mantiene el bloqueo.When you use a SpinLock, ensure that no thread can hold the lock for more than a very brief time span, and that no thread can block while it holds the lock.

Como SpinLock es un tipo de valor, explícitamente debe pasarlo por referencia si pretende que las dos copias hagan referencia al mismo bloqueo.Because SpinLock is a value type, you must explicitly pass it by reference if you intend the two copies to refer to the same lock.

Para obtener más información acerca de cómo utilizar este tipo, vea System.Threading.SpinLock.For more information about how to use this type, see System.Threading.SpinLock. Para consultar un ejemplo, vea Utilizar SpinLock para la sincronización de bajo nivel.For an example, see How to: Use SpinLock for Low-Level Synchronization.

SpinLock admite un modo thread-tracking que puede usar durante la fase de desarrollo para ayudar a realizar un seguimiento del subproceso que está reteniendo el bloqueo en un momento determinado.SpinLock supports a thread-tracking mode that you can use during the development phase to help track the thread that is holding the lock at a specific time. El modo de seguimiento de subprocesos es muy útil para la depuración, pero se recomienda apagarlo en la versión de lanzamiento del programa porque puede ralentizar el rendimiento.Thread-tracking mode is very useful for debugging, but we recommend that you turn it off in the release version of your program because it may slow performance. Para más información, vea Habilitar el modo de seguimiento de subproceso en el bloqueo SpinLock.For more information, see How to: Enable Thread-Tracking Mode in SpinLock.

Vea tambiénSee also