我試圖讓2個進程同時在一個任務上啓動(例如對一個數進行計數)。我爲每個進程設置了2個就緒標誌,並執行一個while循環來檢查兩個標誌是否都啓動。然後這2個進程將在檢查通過後開始計數。這裏是不工作的代碼,我不知道爲什麼:正在同步2個進程
int p1ready=0;
int p2ready=0;
int onebil = 1000000000;
int main(){
int pid;
int exit_code;
pid=fork();
if(pid==0){
//child1
int count1=0;
p1ready=1; //signal
while(!(p1ready&p2ready))'//wait until 2 processes are both ready
while(count1!=onebil){
count1++;
}
exit(0);
}
else{
pid=fork();
if(pid==0){
//child2
int count2=0;
p2ready=1; //signal
while(!(p1ready&p2ready));//wait until 2 processes are both ready
while(count2!=onebil){
count2++;
}
exit(0);
}
else{
//parent
//do stuff
}
return 0;
}
這段代碼的問題是,在child1和的child2,只有自己準備標誌被設置爲1。他們看不到的旗幟其他孩子正在設置。例如,child1只看到p1ready = 1,但p2ready始終爲0.爲什麼這樣呢?我怎樣才能解決這個問題?
在此先感謝!