Compartilhar via


CCriticalSection::Lock

Chamar essa função de membro para obter acesso ao objeto da seção crítica.

BOOL Lock( ); 
BOOL Lock(
   DWORD dwTimeout 
);

Parâmetros

  • dwTimeout
    Lock ignora esse valor do parâmetro.

Valor de retorno

Diferente de zero se a função tenha êxito; se não 0.

Comentários

Lock é um chamada de bloqueio que não retorna até que o objeto da seção crítica é sinalizado (se torna disponível).

Se as programadas espera são necessárias, você pode usar um objeto de CMutex em vez de um objeto de CCriticalSection .

Se Lock não aloca memória do sistema necessária, uma exceção de memória (de tipo CMemoryException) é gerada automaticamente.

Exemplo

Este exemplo demonstra a abordagem aninhada de seção crítica controlar o acesso a um recurso compartilhado (o objeto estático de _strShared ) que usa um objeto compartilhado de CCriticalSection .A função de SomeMethod demonstra atualizar um recurso compartilhado de uma maneira segura.

//Definition of critical section class
class CMyCritSectClass
{
   static CString _strShared; //shared resource
   static CCriticalSection _critSect;
public:
   CMyCritSectClass(void) {}
   ~CMyCritSectClass(void) {}
   void SomeMethod(void); //locks, modifies, and unlocks shared resource
};

//Declaration of static members and SomeMethod
CString CMyCritSectClass::_strShared;
CCriticalSection CMyCritSectClass::_critSect;

void CMyCritSectClass::SomeMethod()
{
   _critSect.Lock();
   if (_strShared == "")
      _strShared = "<text>";
   _critSect.Unlock();
}

Requisitos

Cabeçalho: afxmt.h

Consulte também

Referência

Classe de CCriticalSection

Gráfico de hierarquia

CSingleLock::Lock