Что является лучшим решением для приостановки и возобновления pthreads?

нашел следующую тему (Вот) о pthreads, но есть много хороших решений.

Я хотел знать, допустим ли следующий фрагмент кода, и если да, то почему эта же блокировка используется для вызова pthread_cond_wait, а также для доступа к нему и его разблокировки сразу же:

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

Не лучше ли использовать здесь 2 отдельных мьютекса или это правильный способ приостановить pthread?

Заранее спасибо!

РЕДАКТИРОВАТЬ:

Потрясающие ответы, спасибо всем. Еще один связанный вопрос. Так как я хочу возобновить поток отдельно в другой функции, будет ли более правильным возобновить его?

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

Еще раз спасибо всем !! : ~)

Ответы на вопрос(3)

Ваш ответ на вопрос