Linux環境下實現哲學家就餐問題

2022-02-24 22:35:25 字數 910 閱讀 5407

#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的哲學是什麼?它如何影響社群?多年來,它如何改變了軟體開發?不管我們是否知道,我們大多數人都有某種人生哲學。它可能很簡單,例如 對他人友善 或者可能是非常複雜的生活哲學。許多公司也有某種哲學。它們可能是未寫的...