2017-12-19 8 views
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); 
    } 
} 
+0

특정 오류를 공유하십시오. – Pwnosaurus

+0

배열에 문제가 있습니다. "initialsem은 (는) '배열'유형이 아닙니다. 어떻게 초기화해야할지 모르겠습니다. – qorisend

답변

0

, 그것은 소리 배열 요소의 데이터 유형)