Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A SpinLock estrutura é uma primitiva de sincronização de baixo nível, de exclusão mútua, que gira enquanto espera para adquirir um bloqueio. Em computadores multicore, quando se espera que os tempos de espera sejam curtos e quando a contenção é mínima, SpinLock podem ter um desempenho melhor do que outros tipos de bloqueios. No entanto, recomendamos que o utilizador use SpinLock somente quando determinar, por análise de desempenho, que o método System.Threading.Monitor ou os métodos Interlocked estão abrandando significativamente o desempenho do seu programa.
SpinLock pode render a fatia de tempo do fio, mesmo que ainda não tenha adquirido o bloqueio. Ele faz isso para evitar a inversão de prioridade de tarefas e permitir que o coletor de lixo possa progredir. Ao usar um SpinLock, certifique-se de que nenhum thread possa segurar o bloqueio por mais de um período de tempo muito curto e que nenhum thread possa bloquear enquanto mantém o bloqueio.
Como SpinLock é um tipo de valor, você deve passá-lo explicitamente por referência se pretender que as duas cópias se refiram ao mesmo bloqueio.
Para obter mais informações sobre como usar esse tipo, consulte System.Threading.SpinLock. Para obter um exemplo, consulte Como usar o SpinLock para sincronização Low-Level.
SpinLockSuporta um modode rastreamento de- que você pode usar durante a fase de desenvolvimento para ajudar a rastrear o thread que está segurando o bloqueio em um momento específico. O modo de seguimento de threads é muito útil para depuração, mas recomendamos que o desative na versão de lançamento do seu programa porque pode afetar o desempenho. Para obter mais informações, consulte Como habilitar o modo Thread-Tracking no SpinLock.