1) 유한 버퍼 문제

while(true){
	/* produce an item in next_poduced */
	wait(empty); //비어있는 지 검사
	wait(mutex); //임계 구역에 대한 락 확보
	
	/* add next_produced to the buffer */
	signal(mutex); // 임계 구역에 대한 락 반남
	signal(full); // 채워진 버퍼 표기
while(true){

	wait(full); //사용가능한 버퍼가 있는지 확인
	wait(mutex); // 임계구역에 대한 락 확보
	
	/* remove an item from buffer to next_consumed */
	
	signal(mutex); //임계구역에 대한 락 반남
	signal(empty); //자원을 사용하여 empty 구역이 생겼음을 알림
	
	/* consumed the item in next_consumed */

⇒ 소비자와 생산자가 대칭구조임을 알 수 있다.

2) Readers - Writers 문제

while (true) {
	wait(rw_mutex)
	....
	/* writing is performed*/
	
	signal(rw_mutex)
}
while (true) {
	wait(mutex);
	read_count++;
	if (read_count == 1)
		wait(rw_mutex);
	signal(mutex);
	
	/* reading is performed */
	
	wait(mutex);
	read_count--;
	if(read_count == 0)
		signal(rw_mutex);
	signal(mutex);
}