semaphore max_capacity=20; // 이발소 안에 들어갈 수 있는 수 제한을 위해

semaphore sofa=4; //소파의 개수 4개

semaphore barber_chair=3, coord=3;

semaphore mutex1=1. mutex2=1; //상호배제를 위한 변수

semaphore cust_ready=0, leave_b_chair=0; payment=0; receipt=0;

semaphore finished[50]={0};

int count;

<!--[if !supportEmptyParas]--> <!--[endif]-->

void customer() // customer 스레드

{

int custnr;

semWait(max_capacity);

enter_shop(); //샵에 들어감

semWait(mutex1);

custnr=count;

count++;

semSignal(mutex1);

semWait(sofa);//소파를 기다림

sit_on_sofa();//소파에 앉음

semWait(barber_chair);//미용의자 기다림

get_up_from_sofa();//소파에서 일어남

semSignal(sofa);//소파 비었다고 통보

sit_in_barber_chair();//미용의자에 앉음

semWait(mutex2);

enqueuel(custnr);

semSignal(cust_ready);//미용준비됬다고 통보

semSignal(mutex2);

semWait(finished[custnr]);

leave_barber_chair();//미용의자 떠남

semSignal(leave_b_chair);//미용의자 떠났다고 통보

pay();//돈을 지불함

semSignal(payment);//돈 지불완료 통보

semWait(receipt);//영수증 기다림

exit_shop();//샵 나옴

semSignal(max_capacity);//샵 나왔다고 통보

}

<!--[if !supportEmptyParas]--> <!--[endif]-->

void barber() // barber스레드

{

int b_cust;

while(true)

{

semWait(cust_ready);//손님 기다림

semWait(mutex2);

dequeuel(b_cust);

semSignal(mutex2);

semWait(coord);

cut_hair();//미용함

semSignal(coord);

semSignal(finished[b_cust]);

semWait(leave_b_chair);//손님 떠나기를 기다림

semSignal(barber_chair);//손님 떠났다고 통보

}

}

<!--[if !supportEmptyParas]--> <!--[endif]-->

void cashier() //cashier스레드

{

while(true)

{

semWait(payment);//지불하기를 기다림

semWait(coord);

accept_pay();//지불 승인

semSignal(coord);

semSignal(receipt);//영수증 통보

}

}



주석안달린 빨간 부분좀 설명해줄 착한 분 없나요 ㅠㅠ 이해가 안되서요..

thread랑 semaphore연관지어 공부중인데