Pthread Mutex: pthread_mutex_unlock () consome muito tempo

Eu escrevi um programa multi-thread com pthread, usando o modelo produtor-consumidor.

Quando uso o profiler do Intel VTune para criar o perfil do meu programa, descobri que o produtor e o consumidor gastam muito tempo em pthread_mutex_unlock. Eu não entendo porque isso aconteceu. Eu acho que os threads podem esperar um longo tempo antes de poderem adquirir um mutex, mas liberar um mutex deve ser rápido, certo?

O instantâneo abaixo é da Intel VTune. Ele mostra os códigos em que o consumidor tenta buscar um item do buffer e o tempo consumido por cada linha de código.

Minha pergunta é por que o pthread_mutex_unlock tem essa sobrecarga? O problema com o mutex pthread em si ou com a maneira como eu o utilizo?

questionAnswers(1)

yourAnswerToTheQuestion