五个哲学家吃饭
发布网友
发布时间:2022-08-17 23:31
我来回答
共6个回答
热心网友
时间:2023-10-14 16:10
小猫们听见后,就争先恐后地跑到碗边。它们互不相让,都伸长了脖子,使劲地挤。力气大的小猫获得了“胜利”,津津有味地吃了起来。它们轮流把脑袋伸到饭碗里边,然后张开小嘴巴,伸出粉红色的舌头,把饭粒儿*到舌头上,再缩回舌头,把饭送到嘴巴里并咽下去。有时,它们也会歪着脑袋咀嚼几下……不一会儿,一碗盛得满满的饭被它们吃得精光。小猫们用舌头把粘在嘴边的饭粒儿*光。
热心网友
时间:2023-10-14 16:10
哲学家就餐问题解法(1)
#define N 5
void philosopher (int i)
{
while (true)
{
思考;
取fork[i]; 取fork[(i+1) % 5];
进食;
放fork[i]; 放fork[(i+1) % 5];
}
}
哲学家就餐问题解法(2)
#define N 5
#define THINKING 0
#define HUNGRY 1
#define EATING 2
#typedef int semaphore;
int state[N];
semaphore mutex=1;
semaphore s[N];
void test(int i)
{
if (state[ i ] == HUNGRY)
&& (state [ (i-1) % 5] != EATING)
&& (state [ (i+1) % 5] != EATING)
{
state[ i ] = EATING;
V(&s[ i ]);
}
}
void philosopher (int i)
{ while (true)
{
思考;
P(&mutex);
state[i] = HUNGRY;
test(i);
V(&mutex);
P(&s[i]);
拿左筷子;
拿右筷子;
进食;
放左筷子;
放右筷子;
P(&mutex)
state[ i ] = THINKING;
test([i-1] % 5);
test([i+1] % 5);
V(&mutex);
}
}
state[ i ] = THINKING
s[ i ] = 0
这是用c语言解决的,我也不明白,是我们老师留的题我上网找到的,看你在问就给你一份,让我解释我也解释不明白。Sorry了……
热心网友
时间:2023-10-14 16:10
他们不会是同时感觉到饿的吧?
热心网友
时间:2023-10-14 16:11
这个问题真的好深奥哦``应该得数是4吧!
热心网友
时间:2023-10-14 16:12
乱套,不吃了
热心网友
时间:2023-10-14 16:12
纠结~…………