공유 조건 변경과 waiter 참조 등록 순서를 맞춰 신호 유실을 막습니다.
현재 thread 공개
이미 open이면 대기 안 함
WAITING
상태 먼저 변경
재검사 후 진행
핵심: 깨어난 thread는 lock 또는 동등한 메모리 경계 아래에서 조건을 다시 읽습니다.