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