SpinLockSpinLock

A estrutura SpinLock é uma primitiva de sincronização de nível inferior com exclusão mútua que gira enquanto aguarda adquirir um bloqueio.The SpinLock structure is a low-level, mutual-exclusion synchronization primitive that spins while it waits to acquire a lock. Em computadores com vários núcleos, quando os tempos de espera devem ser curtos e a contenção mínima, o SpinLock pode ter melhor desempenho que outros tipos de bloqueios.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. No entanto, recomendamos usar o SpinLock somente quando você determinar pela criação de perfil que o método System.Threading.Monitor ou os métodos Interlocked estejam causando lentidão significativa no desempenho do seu 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.

O SpinLock pode resultar no fracionamento de tempo do thread mesmo que ainda não tenha adquirido o bloqueio.SpinLock may yield the time slice of the thread even if it has not yet acquired the lock. Isso é feito para evitar a inversão de prioridade de thread e para habilitar o progresso do coletor de lixo.It does this to avoid thread-priority inversion, and to enable the garbage collector to make progress. Ao usar um SpinLock, nenhum thread deverá manter o bloqueio por mais do que um breve intervalo de tempo ou fechar enquanto mantém o bloqueio.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 o SpinLock é um tipo de valor, você deve passá-lo explicitamente por referência se quiser que as duas cópias referenciem o mesmo bloqueio.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.

Confira mais informações sobre como usar este tipo em System.Threading.SpinLock.For more information about how to use this type, see System.Threading.SpinLock. Veja um exemplo em Como: usar o SpinLock para sincronização de nível inferior.For an example, see How to: Use SpinLock for Low-Level Synchronization.

O SpinLock oferece suporte a um modo de controle de thread- que pode ser usado durante a fase de desenvolvimento para ajudar a controlar o thread que está mantendo o bloqueio em um momento específico.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. O modo de controle de thread é muito útil para depuração, mas é recomendável desativá-lo na versão de lançamento do seu programa porque ele pode reduzir o desempenho.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. Confira mais informações em Como: habilitar o modo de controle de thread no SpinLock.For more information, see How to: Enable Thread-Tracking Mode in SpinLock.

Consulte tambémSee also