[code]
#include
#include
#define people 5
#define meat 10 //肉塊的數量
static int tman[people];
int n = 1; //定義n為共吃肉的數量
/定義一些需要跟哲學家對應的陣列///
static int thinking[people]; //第n個哲學家在思考。如果為1就是真,0就假s
static int eating[people]; //第n個哲學家在吃。1為真,0為假
static int eattimeall[people];
static int eattime[people];
static int meatno[people];
int getkey(int i)
else
}else
}else //偶數先從右手開始拿筷子。
else
}else}}
else
else
}else
}void eat() //n表示要吃的第n塊肉}}
void eatting()
if(eattime[i] == eattimeall[i] && eattime[i] != 0)}}
void thinking()}}
void main()
time = 0;
for(;n<=meat;)
printf("哈哈,盤子裡已經沒有肉了./n");
}[/code]
哲學家吃飯問題2019 8 26
有五個哲學家公用一張餐桌,分別坐在周圍的五張椅子上,在餐桌上有五個碗和五隻筷子,他們的生活方式是交替地進行思考和用餐。平時,乙個哲學家進行思考,飢餓時便試圖拿取其左右最靠近他的筷子,只有在他拿到兩隻筷子時才能進餐,進餐完畢,放下筷子繼續思考。思路 選用互斥鎖mutex,如建立5個,pthread m...
哲學家吃飯問題模擬(java寫的)
size large 這裡是兩種演算法,公用乙個chopstick類 chopstick類 size public class chopstick public chopstick string name public void setenable boolean enbl public boole...
哲學家問題
問題描述 有五個哲學家繞著圓桌坐,每個哲學家面前有一盤面,兩人之間有一支筷子,這樣每個哲學家左右各有一支筷子。哲學家有2個狀態,思考或者拿起筷子吃飯。如果哲學家拿到乙隻筷子,不能吃飯,直到拿到2只才能吃飯,並且一次只能拿起身邊的一支筷子。一旦拿起便不會放下筷子直到把飯吃完,此時才把這雙筷子放回原處。...