Qual é a melhor solução para pausar e retomar pthreads?
Eu encontrei o seguinte tópico (Aqui) sobre pthreads, mas existem muitas boas soluções.
Eu queria saber se o seguinte trecho de código é válido e, em caso afirmativo, por que o mesmo bloqueio é usado para chamar pthread_cond_wait, além de acessá-lo e desbloqueá-lo imediatamente:
void suspendMe()
{
pthread_mutex_lock(&m_SuspendMutex);
pthread_cond_wait(&m_ResumeCond, &m_SuspendMutex);
pthread_mutex_unlock(&m_SuspendMutex);
}
Não seria melhor usar 2 mutexes separadas aqui, ou esta é a maneira correta de suspender um pthread?
Desde já, obrigado!
EDITAR:
Respostas impressionantes, obrigado a todos. Apenas mais uma questão relacionada. Desde que eu quero retomar um segmento separadamente em outra função, isso seria mais adequado para retomar isso?
void suspendMe()
{
pthread_mutex_lock(&m_SuspendMutex);
pthread_cond_wait(&m_ResumeCond, &m_SuspendMutex);
}
void resumeMe()
{
pthread_cond_signal(&m_ResumeCond);
pthread_mutex_unlock(&m_SuspendMutex);
}
Mais uma vez obrigado a todos !! : ~)