Share via


SpinLock

O SpinLock estrutura é uma sincronização de nível inferior, a exclusão mútua primitiva que gira enquanto espera para adquirir um bloqueio. Em computadores com vários núcleos, quando os tempos de espera são esperados curta e quando a contenção é mínima, SpinLock pode realizar o melhor do que outros tipos de bloqueios. No entanto, recomendamos que você use SpinLock somente quando você determinar por que criar o perfil do System.Threading.Monitor método ou a Interlocked métodos significativamente estão diminuindo o desempenho do programa.

SpinLockpode produzir a fatia de tempo do thread, mesmo se ele não tiver adquirido o bloqueio. Ele faz isso para evitar a inversão de prioridade de thread e para permitir que o coletor de lixo tornar o progresso. Quando você usa um SpinLock, certifique-se de que nenhum thread pode manter o bloqueio por mais de um intervalo de tempo muito breve, e que nenhum thread pode bloquear enquanto mantém o bloqueio.

Como SpinLock é um tipo de valor, você deve explicitamente passar por referência se você pretende que as duas cópias para se referir ao mesmo bloqueio.

Para obter mais informações sobre como usar esse tipo, consulte System.Threading.SpinLock. Para um exemplo, consulte Como: Usar SpinLock para sincronização de nível inferior.

SpinLockoferece suporte a um segmento-de controle modo que você pode usar durante a fase de desenvolvimento para ajudar a controlar o thread que está retendo o bloqueio em um momento específico. Modo de controle de segmento é muito útil para depuração, mas recomendamos que você desativá-lo na versão de lançamento do seu programa porque ele pode diminuir o desempenho. Para obter mais informações, consulte Como: Habilitar o modo de rastreamento do Thread no SpinLock.

Consulte também

Outros recursos

Threading objetos e recursos