SpinLock.Enter(Boolean) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Adquire o bloqueio de maneira confiável, de modo que, mesmo que ocorra uma exceção dentro da chamada de método, lockTaken possa ser examinada de forma confiável para determinar se o bloqueio foi adquirido.
public:
void Enter(bool % lockTaken);
public void Enter(ref bool lockTaken);
member this.Enter : bool -> unit
Public Sub Enter (ByRef lockTaken As Boolean)
Parâmetros
- lockTaken
- Boolean
True se o bloqueio for adquirido; caso contrário, false.
lockTaken deve ser inicializado como false antes de chamar esse método.
Exceções
O lockTaken argumento deve ser inicializado como false antes de chamar Enter.
O controle de propriedade do thread está habilitado e o thread atual já adquiriu esse bloqueio.
Comentários
SpinLock é um bloqueio não reentrante, o que significa que, se um thread mantiver o bloqueio, não será permitido inserir o bloqueio novamente. Se o controle de propriedade do thread estiver habilitado (se ele estiver habilitado estiver disponível por meio IsThreadOwnerTrackingEnabled), uma exceção será gerada quando um thread tentar inserir novamente um bloqueio que ele já mantém. No entanto, se o controle de propriedade do thread estiver desabilitado, a tentativa de inserir um bloqueio já mantido resultará em deadlock.
Se você ligar Exit sem ter chamado Enter primeiro o estado interno do SpinLock pode ficar corrompido.