futex path

Futex는 대부분 사용자 공간에서 끝내고 경쟁 때만 커널로 간다

lock 값이 비어 있으면 atomic 연산으로 바로 진입하고, 이미 잡혀 있으면 futex wait로 커널 대기열에 들어간다.

atomic try user space 락 값 먼저 확인
fast path 성공 커널 진입 없음
slow path 실패 futex wait
wake unlock 필요한 대기자 깨움
경로
일어나는 일
성능 의미
fast path
CAS 성공
system call 없음
slow path
커널 대기
경합 비용만 지불
wake
대기자 선택
thundering herd 주의
spurious wake
다시 검사
while 조건 필수
핵심 lock 값이 비어 있으면 atomic 연산으로 바로 진입하고, 이미 잡혀 있으면 futex wait로 커널 대기열에 들어간다.