O que é o navio relação entre CRITICAL_SECTION e CCriticalSection

votos
0

O que é o navio relação entre CRITICAL_SECTION e CCriticalSection. é CCriticalSection um invólucro de CRITICAL_SECTION?

BTW:

Eu acho que o seguinte código é meanless porque o cs não é global, rubricar cada vezes antes lock () para que ele não pode bloquear o XXX, não é?

int func
{
CCriticalSection cs;
cs.Lock();
XXX
cs.Unlock();
}

Muito Obrigado!

Publicado 27/08/2009 em 03:14
fonte usuário
Em outras línguas...                            


1 respostas

votos
2

Sim, o MFC CCriticalSection seção é apenas um wrapper em torno de um CRITICAL_SECTION Win32.

Isso vale para praticamente todos MFC, é um enorme conjunto de classes de mensagens publicitárias em torno de funcionalidade padrão Win32.

Quanto ao seu exemplo de código, sim o uso de uma seção crítica, nesse contexto, não tem sentido. O que uma seção crítica faz é semelhante a um mutex nomeado, ele garante que um recurso só pode ser acessado por uma única linha de cada vez. A utilização adequada de uma secção crítica seria como um objeto acessível por vários segmentos, em seguida, quando se utiliza um recurso que não pode ser usado por mais do que um fio de cada vez:

MyGlobalCS.Lock();

// Do important work on resource

MyGlobalCS.Unlock();

Observe também que, se sua difícil conseguir a seção crítica em um local compartilhado você pode usar um nomeado mutex vez.

Respondeu 27/08/2009 em 03:24
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more