关于计算机操作系统的问题

关于哲学家进餐思考的伪码(好像是这么说的吧)如下:#defineTRUE1#defineN5//哲学家数Semaphore_tmutex=1,fork[]={1,1,1,... 关于哲学家进餐思考的伪码(好像是这么说的吧)如下:
#define TRUE 1
#define N 5 // 哲学家数
Semaphore_t mutex = 1, fork[] = {1, 1, 1, 1, 1};
void philosopher (int i) // i是哲学家编号:0~N-1
{
while (TRUE) {
think();
P(&mutex);
P(&fork[i]);
P(&fork[(i+1) % N]);
V(&mutex)
eat();
V(&fork[i]);
V(&fork[(i+1) % N]); }
}
这些语句里诸如P(&mutex); P(&fork[i]);是什么意思?这个&符号是什么意思?
恳请高人解答
展开
 我来答
我是百人敌
2013-01-06 · TA获得超过358个赞
知道小有建树答主
回答量:310
采纳率:0%
帮助的人:269万
展开全部
这是信号量PV操作。
P是请求操作,V是释放操作(使用结束后让别人请求)。

在变量前加&是指传地址方式,
C语言中函数参数为结构体时,一般采用传地址方式。(伪代码其实不用这么写)

这里采用了同时请求左右筷子的策略。

每个哲学家吃饭前需要请求筷子,也就是
P(&fork[i]);
P(&fork[(i+1) % N]);
直接这么写会有死锁。所以要用互斥变量mutex将其做成临界区,防止同时请求。
然后,吃饭。
吃完饭,释放筷子,让别人请求,即:
V(&fork[i]);
V(&fork[(i+1) % N]);
专业语音导览
2024-11-15 广告
"分区讲解系统是一种在展馆或展厅使用的讲解系统,也被称为团队智慧讲解系统、展厅分区讲解系统、展馆讲解系统、分区解说系统等不同称谓。它适用于讲解员向游客进行团队讲解的情况,讲解员可手持无线讲解发射器进行语音讲解,参观者无需佩戴耳机,也可以听到... 点击进入详情页
本回答由专业语音导览提供
小民笨笨
2013-01-06 · 超过12用户采纳过TA的回答
知道答主
回答量:95
采纳率:0%
帮助的人:39.5万
展开全部
P(&mutex)是函数,这一句进行函数调用。
P(&fork[i])也是函数调用。&fork[i]是取fork[i]数组的地址。
符号&是取地址符号,C++都有说明的。整个程序要放在上下文才能理解。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
modress
2013-01-06 · TA获得超过478个赞
知道答主
回答量:167
采纳率:100%
帮助的人:44.4万
展开全部
P 跟 V 都是函数名 P(&mutext); 表示调用函数P,括号中的&mutext 表示引用mutext的地址。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我勒不去呃
2013-01-06
知道答主
回答量:39
采纳率:0%
帮助的人:17.9万
展开全部
不知道…
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式