国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 操作系統(tǒng) > 正文

操作系統(tǒng)經典同步互斥問題——哲學家就餐

2024-06-28 13:23:50
字體:
來源:轉載
供稿:網友
操作系統(tǒng)經典同步互斥問題——哲學家就餐僅僅允許4個人同時就餐
#include <iostream>#include <mutex>#include <cstdio>#include <thread>#include <semaphore.h>using namespace std;#define THINK(i) PRintf("ph[%d] is thinking.../n", i)#define EAT(i) printf("ph[%d] eats./n", i)void P(mutex &mt){    mt.lock();}void V(mutex &mt){    mt.unlock();}void P(sem_t* sem){    if(sem_wait(sem))        perror("P error!");}void V(sem_t* sem){    if(sem_post(sem))        perror("V error!");}// 加入unistd.h出現(xiàn)問題,似乎與thread的兼容性比較差,于是重寫void delay(){    int sum=0;    for(int i = 0; i < 10000000; i++)        sum += i;}mutex fork[5];sem_t room;void init(){    sem_init(&room, 0, 4);}void philosopher (int i){    for(int j = 0; j < 5; j++)    {        THINK(i);        P(&room);        P(fork[i]);        P(fork[(i+1)%5]);        EAT(i);        V(&room);        V(fork[i]);        V(fork[(i+1)%5]);    }}int main(){    init();    thread t[] = {        thread(philosopher, 0),        thread(philosopher, 1),        thread(philosopher, 2),        thread(philosopher, 3),        thread(philosopher, 4),    };                for(int k = 0; k < 5; k++)        t[k].join();        return 0;}

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 大田县| 望谟县| 太原市| 和平区| 平原县| 通化市| 昌黎县| 隆昌县| 淳化县| 普陀区| 崇左市| 河北省| 孟州市| 临武县| 衡山县| 厦门市| 定襄县| 娄底市| 岳普湖县| 额尔古纳市| 东光县| 平定县| 顺昌县| 吉水县| 周至县| 达拉特旗| 溧阳市| 昌宁县| 花莲市| 丹东市| 泰安市| 昆明市| 九龙县| 彭山县| 昭平县| 新沂市| 海宁市| 嵊州市| 利川市| 织金县| 天峨县|