Quelle est la meilleure solution pour mettre en pause et reprendre pthreads?

J'ai trouvé la rubrique suivante (ici) sur les pthreads, mais il y a beaucoup de bonnes solutions.

Je voulais savoir si le morceau de code suivant est valide, et si oui, pourquoi le même verrou est utilisé pour appeler pthread_cond_wait ainsi que l'accès et ensuite débloqué tout de suite:

void suspendMe()
{
    pthread_mutex_lock(&m_SuspendMutex);
    pthread_cond_wait(&m_ResumeCond, &m_SuspendMutex);
    pthread_mutex_unlock(&m_SuspendMutex);
}

Ne serait-il pas préférable d'utiliser 2 mutex ici, ou est-ce la bonne façon de suspendre un pthread??

Merci d'avance!

EDIT:

Impressionnant de réponses, merci à tous.
Juste une question connexe. Depuis que j'ai envie de reprendre un fil séparément dans une autre fonction, cela serait-il plus approprié à la reprise de l'?

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);
}

Merci encore à tous!! :~)

source d'informationauteur Chef Pharaoh