락 공정성
- 공정한 방법: 락을 요청한 순서대로 락을 확보
- 불공정한 방법: 순서 뛰어넘기가 발생할 수 있음. 락을 확보하려는 대기큐에 스레드가 있다 하더라도 해제된 락이 있으면 대기자 목록을 뛰어넘어 락을 확보 할 수 있음
락 불공정성의 필요성
락을 관리하는 입장에서는 공정하게만 처리하다 보면 스레드를 멈추고 다시 실행하는 과정이 성능에 큰 지장을 줄 수 있다.
- 스레드 간의 경쟁이 심하게 나타나는 상황에서 락을 공정하게 관리하는 것보다 불공정하게 관리하는 방법의 성능이 더 좋은 경우가 있을 수 있음.
- 대기 상태에 있는 스레드가 다시 실행 상태로 돌아가고 실행되기 까지는 상당한 오버헤드가 생긴다. 따라서 이미 실행 중인 스레드가 락을 요청했을 경우 락을 바로 주게 되면 성능상 이득이 될 수 있음