SpinLock

La estructura SpinLock es una primitiva de sincronización de exclusión mutua y bajo nivel que itera en ciclos mientras espera adquirir un bloqueo. En equipos con varios núcleos, en que los períodos de tiempo de espera deben ser breves y en que la contención es mínima, el comportamiento de SpinLock puede ser mejor que el de otros tipos de bloqueos. Sin embargo, se recomienda utilizar SpinLock solamente si se determina mediante la generación de perfiles que los métodos System.Threading.Monitor o Interlocked están reduciendo el rendimiento del programa de forma significativa.

SpinLock puede proporcionar el intervalo de tiempo del subproceso aunque no haya adquirido el bloqueo todavía. El motivo es evitar la inversión de la prioridad del subproceso y permitir el progreso del recolector de elementos no utilizados. Cuando se utiliza SpinLock, conviene asegurarse de que ningún subproceso mantenga el bloqueo durante más de un brevísimo intervalo de tiempo, y que ningún subproceso se pueda bloquear mientras mantiene el bloqueo.

Como SpinLock es un tipo de valor, se debe pasar explícitamente por referencia si se pretende que las dos copias hagan referencia al mismo bloqueo.

Para obtener más información acerca de cómo utilizar este tipo, vea System.Threading.SpinLock. Para obtener un ejemplo, vea Cómo: Utilizar SpinLock para la sincronización de bajo nivel.

SpinLock admite un modo de seguimiento de subprocesos que se puede utilizar durante la fase de desarrollo para ayudar a realizar el seguimiento del subproceso que está manteniendo el bloqueo en un momento concreto. El modo de seguimiento de subprocesos es muy útil para la depuración, pero se recomienda desactivarlo en la versión de lanzamiento del programa porque puede reducir el rendimiento. Para obtener más información, vea Cómo: Habilitar el modo de seguimiento de subproceso en el bloqueo SpinLock.

Vea también

Otros recursos

Objetos y características de subprocesos