Pthread-Mutex: pthread_mutex_unlock () verbraucht viel Zeit

Ich habe mit pthread ein Multithread-Programm nach dem Producer-Consumer-Modell geschrieben.

Wenn ich Intel VTune Profiler verwende, um mein Programm zu profilieren, verbringen Produzent und Konsument viel Zeit mit pthread_mutex_unlock. Ich verstehe nicht, warum das passiert ist. Ich denke, Threads können lange warten, bis sie einen Mutex erhalten, aber die Freigabe eines Mutex sollte schnell gehen, oder?

Der folgende Schnappschuss stammt von Intel VTune. Es zeigt die Codes, bei denen der Verbraucher versucht, ein Element aus dem Puffer abzurufen, und die von jeder Codezeile verbrauchte Zeit.

Meine Frage ist, warum pthread_mutex_unlock solchen Overhead hat? Liegt das Problem bei pthread mutex selbst oder bei der Art und Weise, wie ich es verwende?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage