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 forma que mesmo se uma exceção ocorrer dentro da chamada de método, lockTaken
poderá ser examinado com confiança 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 tiver sido adquirido; caso contrário, false. lockTaken
deve ser inicializado como false antes de chamar esse método.
Exceções
O argumento lockTaken
deve ser inicializado como false antes de chamar Enter.
O acompanhamento de propriedade de thread está habilitado e o thread atual há adquiriu este 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 por meio IsThreadOwnerTrackingEnabled), uma exceção será gerada quando um thread tentar inserir novamente um bloqueio que ele já contém. No entanto, se o controle de propriedade do thread estiver desabilitado, tentar 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.