哲學家吃飯問題

2021-06-15 19:21:35 字數 825 閱讀 4686

[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只才能吃飯,並且一次只能拿起身邊的一支筷子。一旦拿起便不會放下筷子直到把飯吃完,此時才把這雙筷子放回原處。...