사용자 공간 CAS
락 값이 비어 있으면 원자적 명령어 한 번으로 바로 진입한다.
같은 임계 영역이라도 경합이 없을 때, 짧게 겹칠 때, 오래 막힐 때의 비용이 완전히 다르다.
락 값이 비어 있으면 원자적 명령어 한 번으로 바로 진입한다.
다른 코어가 곧 unlock할 가능성이 크면 CPU를 쓰며 짧게 반복한다.
임계 영역이 길면 스레드를 재워 CPU 낭비를 줄인다.
unlock이 대기자를 깨우면 다시 락 값을 확인하고 획득을 시도한다.
커널 내부의 매우 짧은 구간처럼 잠드는 비용이 더 클 때 적합하다.
일반 사용자 공간 코드처럼 오래 기다릴 수 있으면 슬립이 안전하다.
평소에는 CAS로 빠르게 끝내고 경합 때만 커널 도움을 받는다.