Was ist die beste Lösung, um pthreads anzuhalten und fortzusetzen?

Ich habe folgendes Thema gefunden (Hier) über pthreads gibt es aber viele gute lösungen.

Ich wollte wissen, ob der folgende Code gültig ist und wenn ja, warum dieselbe Sperre verwendet wird, um pthread_cond_wait aufzurufen, darauf zuzugreifen und dann sofort zu entsperren:

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

Wäre es nicht besser, hier zwei separate Mutexe zu verwenden, oder ist dies der richtige Weg, um einen Pthread auszusetzen?

Danke im Voraus!

BEARBEITEN:

Fantastische Antworten, danke an alle. Nur noch eine verwandte Frage. Da ich einen Thread separat in einer anderen Funktion wiederaufnehmen möchte, ist dies sinnvoller, wenn ich ihn wiederaufnehme?

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

Nochmals vielen Dank an alle !! : ~)

Antworten auf die Frage(3)

Ihre Antwort auf die Frage