Por que Pthread_cond_wait precisa de um mutex?
Por que Pthread_cond_wait precisa de um mutex?

Vídeo: Por que Pthread_cond_wait precisa de um mutex?

Vídeo: Por que Pthread_cond_wait precisa de um mutex?
Vídeo: EEL770 - 22 - Variáveis de condição 2024, Novembro
Anonim

o mutex é usado para proteger a própria variável de condição. É por isso que você necessidade trancou antes de você Faz aguardam. Então, quando a variável de condição é sinalizada ou transmitida para, um ou mais dos segmentos na lista de espera serão acordados e o mutex será bloqueado magicamente novamente para esse tópico.

Com relação a isso, Pthread_cond_wait desbloqueia mutex?

o pthread_cond_wait () bloqueia a função de chamada na variável de condição cond, e desbloqueia o associado mutex mutex . O tópico de chamada deve estar bloqueado mutex antes de esperar na variável de condição. Ao retornar da função, o mutex é novamente bloqueado e pertencente ao encadeamento de chamada.

Posteriormente, a questão é: por que o mutex é necessário? Ele garante que apenas um thread esteja executando uma parte importante do código por vez, o que limita o acesso a uma estrutura de dados. Isso garante que os dois threads tenham uma visão completa e adequada dessa memória, independentemente de qualquer reordenamento da CPU. o mutex é uma necessidade absoluta ao fazer programação simultânea.

Além disso, por que as variáveis de condição precisam de mutex?

o mutex é usado para proteger o variável de condição em si. É por isso que você necessidade trancou antes de você Faz aguardam. Então, quando o variável de condição é sinalizado ou transmitido para um ou mais tópicos na lista de espera vai ser acordado e o mutex vai ser magicamente bloqueado novamente para esse tópico.

Por que precisamos de variáveis de condição?

Variáveis de condição permitir que um conjunto de tópicos durma até fazer cócegas! Você pode fazer cócegas em um tópico ou em todos os tópicos que estão adormecidos. Se você ativar apenas um thread, o sistema operacional decidirá qual thread será ativado.

Recomendado: