Von hier aus: https://computing.llnl.gov/tutorials/pthreads/#ConVarSignal
Beachten Sie, dass die pthre Routine den Mutex automatisch und atomisch entsperrt, während sie wartet.
Der folgende Untercode stammt aus demselben Link (Formatierung von mir):
pthread_mutex_lock(&count_mutex);
while (count<COUNT_LIMIT)
{
pthread_cond_wait(&count_threshold_cv, &count_mutex);
printf("watch_count(): thread %ld Condition signal received.\n", my_id);
count += 125;
printf("watch_count(): thread %ld count now = %d.\n", my_id, count);
}
pthread_mutex_unlock(&count_mutex);
Frage:
Wenn es heißt, dass pthread_cond_wait
wird automatisch den Mutex entsperren, während es wartet, warum müssen wir dann ausdrücklich die Funktion angeben pthread_mutex_unlock
am Ende des obigen Codes?
Was ist der Punkt, den ich übersehe?