Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os directorios.
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. En equipos de varios núcleos, cuando se espera que los tiempos de espera sean cortos y cuando la contención sea mínima, SpinLock puede funcionar mejor que otros tipos de bloqueos. Sin embargo, se recomienda usar SpinLock solo cuando determine mediante la generación de perfiles que el System.Threading.Monitor método o los Interlocked métodos ralentizan significativamente el rendimiento del programa.
SpinLock puede generar el intervalo de tiempo del subproceso incluso si aún no ha adquirido el bloqueo. Esto se hace para evitar la inversión de prioridades del subproceso y para permitir que el recolector de elementos no utilizados progrese. 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.
Como SpinLock es un tipo de valor, explícitamente debe pasarlo por referencia si pretende que las dos copias hagan referencia al mismo bloqueo.
Para obtener más información sobre cómo usar este tipo, vea System.Threading.SpinLock. Para obtener un ejemplo, vea 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. 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 ralentizar el rendimiento. Para obtener más información, vea Cómo: Habilitar el modo Thread-Tracking en SpinLock.