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 !! : ~)

questionAnswers(3)

yourAnswerToTheQuestion