나의 이해는 그 뮤텍스의 가장 인기 구현 (예 : 표준 : : C ++에서 뮤텍스)하지 보증 할 공정성을 - 즉, 그들은 보증하지 않습니다 경합의 경우에, 잠금이 순서대로 스레드에 의해 인수 될 것을 그들이 lock ()이라고합니다. 실제로, 경합이 많은 경우, 뮤텍스를 얻기 위해 대기중인 일부 스레드가 절대로이를 획득 하지 못할 수도 있습니다 (희망적이지는 않지만) .
이것은 나에게 도움이되지 않는 행동처럼 보입니다. 공정한 뮤텍스가 프로그래머가 원하거나 기대하는 것에 따라 행동을 더 많이 낳을 것 같습니다.
뮤텍스가 일반적으로 공정하게 구현되지 않은 이유는 "성능"이지만, 이것이 의미하는 바, 특히 뮤텍스의 공정성 요구를 완화하는 것이 성능을 어떻게 향상시키는 지 더 잘 이해하고 싶습니다. "공평한"뮤텍스는 구현하기가 쉽지 않은 것 같습니다. 스레드를 휴면 상태로 만들기 전에 lock ()을 호출하여 뮤텍스의 링크 된 목록의 꼬리 부분에 추가 한 다음 unlock ()을 다음 스레드에서 같은 목록의 머리와 깨우십시오.
여기서 내가 놓친 뮤텍스 구현 통찰력은 무엇입니까?