#include #include#include
#include
#include
#include
//筷子作為mutex
pthread_mutex_t chopstick[6] ;//
定義以筷子為鎖的陣列
void *eat_think(void *arg)
inti;
for(;;)
//pthread_mutex_lock(&chopstick[right]);
//拿起右手的筷子,如果想觀察死鎖,把上一句if注釋掉,再把這一句的注釋去掉
printf("
philosopher %c fetches chopstick %d\n
", phi, right); //
輸出此哲學家又拿起了右手邊的跨子
printf("
philosopher %c is eating.\n
",phi);//
輸出此次的哲學家拿起啦一雙筷子在吃飯
usleep(3); //
吃飯,把程序掛起一段時間
pthread_mutex_unlock(&chopstick[left]); //
放下左手的筷子
printf("
philosopher %c release chopstick %d\n
", phi, left);
pthread_mutex_unlock(&chopstick[right]); //
放下右手的筷子
printf("
philosopher %c release chopstick %d\n
", phi, right);
}}int
main()
Linux下實現哲學家就餐問題
哲學家進餐問題是乙個多執行緒運用的經典例子,涉及到執行緒同步 互斥,臨界區訪問問題以及乙個避免死鎖的解決方法。有五個哲學家繞著圓桌坐,每個哲學家面前有一盤面,兩人之間有一支筷子,這樣每個哲學家左右各有一支筷子。哲學家有2個狀態,思考或者拿起筷子吃飯。如果哲學家拿到乙隻筷子,不能吃飯,直到拿到2只才能...
哲學家就餐
include include include include include include 筷子作為mutex pthread mutex t chopstick 6 void eat think void arg int i for pthread mutex lock chopstick r...
哲學家就餐 linux實現 Linux哲學的影響
哲學家就餐 linux實現 所有作業系統都有乙個理念。而且,作業系統的原理很重要。linux的哲學是什麼?它如何影響社群?多年來,它如何改變了軟體開發?不管我們是否知道,我們大多數人都有某種人生哲學。它可能很簡單,例如 對他人友善 或者可能是非常複雜的生活哲學。許多公司也有某種哲學。它們可能是未寫的...