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