Pthread Mutex: pthread_mutex_unlock () zużywa dużo czasu

Napisałem program wielowątkowy z pthread, używając modelu producent-konsument.

Kiedy używam profilera Intel VTune do profilowania mojego programu, odkryłem, że producent i konsument spędzają dużo czasu na pthread_mutex_unlock. Nie rozumiem, dlaczego tak się stało. Myślę, że wątki mogą długo czekać, zanim zdobędą muteks, ale wypuszczenie muteksu powinno być szybkie, prawda?

Poniższa migawka pochodzi z Intel VTune. Pokazuje kody, w których konsument próbuje pobrać element z bufora, oraz czas zużywany przez każdą linię kodu.

Moje pytanie brzmi: dlaczego pthread_mutex_unlock ma takie obciążenie? Czy problem dotyczy samego muteksu pthread, czy sposobu, w jaki go używam?

questionAnswers(1)

yourAnswerToTheQuestion