2 Stimmen

pthread_cond_wait hebt automatisch und atomar die Sperrung des Mutex auf, während es wartet

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?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X