Я написал многопоточную программу с pthread, используя модель производителя-потребителя.
Когда я использую профилировщик Intel VTune для профилирования своей программы, я обнаружил, что производитель и потребитель тратят много времени на pthread_mutex_unlock. Я не понимаю, почему это произошло. Я думаю, что потоки могут долго ждать, прежде чем они смогут получить мьютекс, но освобождение мьютекса должно быть быстрым, верно?
Ниже приведен снимок от Intel VTune. Он показывает коды, где потребитель пытается извлечь элемент из буфера и время, затрачиваемое на каждую строку кода.
Мой вопрос в том, почему у pthread_mutex_unlock есть такие накладные расходы? Является ли проблема с самим мьютексом pthread или с тем, как я его использую?