1
세마포어를 사용하여 식당 철학자 문제를 해결해야합니다. 내 코드에서 매초 철학자는 젓가락을 가져 가고 나머지는 기다리고 있습니다.세마포어 (BACI)를 사용하여 식사 철학자
아직 주 기능에 오류가 있습니다. 젓가락 [k]을 시작하는 방법을 알려주시겠습니까? 나는 BACI의 초보자입니다. 5 배열의 길이이며, 어디
이binarysem initialsem[5];
(binarysem가 있습니다 : 당신이 뭔가를 원할 것 그래서 배열은 C에서처럼 초기화해야처럼 this BACI summary에 따르면
binarysem ChopStick[5];
binarysem speak;
void philosopher(int index){
int i,k;
int x;
x=0;
for(i=0;i<k;i++){
cout << "I am philosopher: " << index << " and i am thinking "<< endl;
signal(speak);
if(index % 2 == 0){
wait(ChopStick[index]);
wait(ChopStick[(index+1) % 5]);
}
else{
wait(ChopStick[index]);
wait(ChopStick[(index+1) % 5]);
}
x++;
wait(speak);
cout <<"I am philosopher: "<< index <<" and i eat: "<< x << "times" << endl;
signal(speak);
signal(ChopStick[index]);
signal(ChopStick[(index+1) % 5]);
main(){
int k;
for(k=0;k<5;k++){
initialsem(ChopStick[k],1);
initialsem(speak,1);
}
cobegin
{
philosopher(1); philosopher(2); philosopher(3); philosopher(4); philosopher(5);
}
}
특정 오류를 공유하십시오. – Pwnosaurus
배열에 문제가 있습니다. "initialsem은 (는) '배열'유형이 아닙니다. 어떻게 초기화해야할지 모르겠습니다. – qorisend