뮤텍스일 때와 동일하게 화장실은 공유 자원을 포함한 임계 영역을 의미하고, A, B, C, D는 공유 자원에 접근하려는 프로세스를 의미한다. 화장실 개수(열쇠 개수)는 공유 자원에 접근할 수 있는 프로세스의 수를 제어하기 위한 정수 변수를 나타낸다. 임계 영역에 접근할 수 있는 키 n개를 지정하고 이 중 하나를 가진 프로세스만이 임계 영역에 접근하게 하는 방식이다. 이 방식은 공유 자원에 접근한 프로세스가 접근을 해제하면 다른 프로세스가 접근할 수 있도록 신호를 보낸다고 해서 시그널링 메커니즘(signaling mechanism)이라고도 한다.
하나 더 알기
동기와 비동기, 블로킹과 넌블로킹은 작업 처리와 관련해 자주 사용하는 용어인데, 개념을 헷갈리기 쉽다. 동기와 비동기는 작업 순서에 대한 개념이고, 블로킹과 넌블로킹은 작업을 위한 대기를 구분하는 개념이다. 가끔 비교하는 질문이 나오므로 개념을 알아 두어야 한다.
• 동기(synchronization): 여러 작업을 처리할 때 작업 순서를 보장함
• 비동기(asynchronization): 여러 작업을 처리할 때 작업 순서를 보장하지 않음
• 블로킹(blocking): 작업을 수행할 때 대기할 수 있다는 것을 의미하며 작업 순서를 보장하지 않음
• 넌블로킹(non-blocking): 작업을 시작하면 대기 없이 수행한다는 것을 의미함