问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

哲学家用餐问题 求助 急!!!

发布网友 发布时间:2023-07-14 08:35

我来回答

1个回答

热心网友 时间:2024-11-25 13:16

#include <pthread.h>
#include <stdio.h>

#define N 5
#define LEFT (i+N-1)%N
#define RIGHT (i+1)%N
#define THINK_TIME 3
#define EAT_TIME 2

enum { THINKING, HUNGRY, EATING } state[N];

pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER, s[N];

void test(int i)
{
if (state[i] == HUNGRY
&& state[LEFT] != EATING
&& state[RIGHT] != EATING)
{
state[i] = EATING;
pthread_mutex_unlock(&s[i]);
}
}

void take_forks(int i)
{
pthread_mutex_lock(&mutex);
state[i] = HUNGRY;
test(i);
pthread_mutex_unlock(&mutex);
pthread_mutex_lock(&s[i]);
}

void put_forks(int i)
{
pthread_mutex_lock(&mutex);
state[i] = THINKING;
test(LEFT);
test(RIGHT);
pthread_mutex_unlock(&mutex);
}

void think(int i)
{
printf("philosopher %d is thinking...\n", i);
sleep(THINK_TIME);
}

void eat(int i)
{
printf("philosopher %d is eating...\n", i);
sleep(EAT_TIME);
}

void* phi(void* vargp)
{
int i = *(int*)vargp;
while (1)
{
think(i);
take_forks(i);
eat(i);
put_forks(i);
}
return NULL;
}

int main()
{
int i;
pthread_t tid[N];
for (i = 0; i < N; i++)
pthread_create(&tid[i], NULL, phi, (void*)(&i));
for (i = 0; i < N; i++)
pthread_join(tid[i], NULL);
return 0;
}追问能说明一下一些重要的变量定义吗
就注释一下
谢谢了

追答其实哲学家就餐就是一个这样的逻辑,只有当某个哲学家左边和右边的筷子都空闲就可以就餐,一旦遇到有一个或者两个都不空闲,就继续等待,

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 养宠物的人遵守规则,是不是就能和别人平安相处呢? 企业培训学到了什么 培训感悟简短 有关培训的感悟 通过培训学到什么 培训你学到了什么 领导问培训学到什么怎么回复 员工士气是指什么? 触电后手关节很痛是什么原因? ...被电出一个泡来,现在好痛啊,怎么办啊!?(很抱歉,我现在没有财富_百度... 触电后半年,双手小手指疼,怎么回事 左边大母手指头被电了怎么办 还一直疼好几天 只不过电流小 小宝手指头被电了总是疼怎么办? 中国西瓜虫有多少种 成为韩国影史票房第一位,真被这个38岁的男人锁住了 豫章师范学院和豫章书院什么关系 《76号魔窟》 豫章书院是大学吗 为什么喜欢用灬 鸢尾科植物有哪些品种 预科填报志愿时可以A类和B类同时填 因为有梦,所以成功作文 因为梦作文 作文因为有梦750字 北平解放后,谁来担任市委书记?毛主席点名此人,他81岁成正国级- 辽宁高风险地区来中山要做核酸吗?(辽宁高风险地区来中山要做核酸吗最新... 从龙凤公安局大庆恒大影城坐公交怎么走 正国级干部,邓小平让他当部长推辞,直到毛主席一句话才走马上任_百度知... 跟谁学的耿佩老师的上课风格怎么样? 有人听过耿老师的物理课吗?怎么样? 哪些食物具有抗癌作用? 自制酸奶当引子是放的越多越好吗 手机uc浏览器怎么退出自动进入小说模式详细介绍 小学班主任促进班风学风工作总结 对学生认为什么是良好班风以及学 如何培养低年级学生良好的班风学风 嘉拓电子负载怎么开sense 我的永久被封了,还能解开吗微信封永久能解封吗? 冗余配置为什么要×2 美团入住酒店备注怎么写 逍遥西游制药玩法攻略详解 逍遥西游炮仙那些装备可以炼化出狂暴 逍遥西游技能详解,逍遥西游魔族技能介绍 逍遥西游技能详解,逍遥西游仙族技能介绍 有胃溃疡的人可以吃柚子吗 春秋航空在线值机后如有托运怎么办 如何教育孩子,做一个有修养的人 从广州南到长沙南站下高铁&#xF684;,怎么直达汽车南站???求解