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?