问题标签 [dining-philosopher]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1961 浏览

java - 解决餐饮哲学家的另一种方法(需要指向正确的方向)

对于一项编程任务,我被要求实施解决餐饮哲学家问题的方法。我必须以两种方式这样做:

  1. 使用 wait() 和 notifyAll() 机制
  2. 使用 Java API 中提供的现有并发数据结构

我已经完成了第一个实现。我的教授在第二步谈论哪种并发数据结构?我不记得她提过什么。我不需要任何源代码,只需要一个指向正确方向的指针。

0 投票
2 回答
1694 浏览

multithreading - 餐饮哲学家问题 - 需要澄清

最近我阅读了这篇关于餐饮哲学家问题的维基百科文章,但我不清楚 Chandy / Misra 的解决方案。

根据文章,“当一个拿着叉子的哲学家收到请求消息时,如果叉子是干净的,他会保留叉子,如果叉子脏了就放弃。” 在这个问题的上下文中,如果他正在吃东西,他会通过它,如果他还没有开始吃东西,他会保留它。

根据场景,Dirty 是什么意思?线程正在运行还是已经退出?

0 投票
2 回答
1010 浏览

c - 如何同时使用多个 fork() 运行?以及如何在c中使用信号量?

我正在处理教授要求使用信号量解决用餐哲学家问题的解决方案的任务。

到目前为止,这是我的代码:

当我运行它时,我得到了以下信息:

如您所见,我有两个问题:

  • 除非进程 n 完成,否则进程 n+1 不会执行。
  • 在之前运行程序的测试中,当第二个哲学家要求拿起筷子时,它被卡住了。似乎信号量没有发出信号,而哲学家正在等待信号。

你能帮我修复程序吗?

0 投票
2 回答
9956 浏览

c - 餐饮哲学家饿死的可能性

如果它保证满足以下所有条件,我需要检查我解决餐饮哲学家问题的算法:

  • 没有死锁的可能。
  • 没有饿死的可能。

我正在使用筷子上的信号量来解决问题。

这是我的代码(算法):

我确信这里没有死锁的可能性,但是这里有可能出现饥饿问题吗?如果是,我该如何解决?

0 投票
2 回答
4123 浏览

java - 在 Java 中用餐哲学家会导致僵局

我在java中实现了哲学家就餐问题,但是出了点问题,导致死锁......有人能发现为什么这会导致死锁吗?

哲学家在餐厅里应该永远是 N-1,这样每个人都可以吃饭并防止饥饿。

主要类:

筷子类:

食堂课:

哲学家班:

0 投票
1 回答
797 浏览

java - 在pnml中使用java代码来表示Colored Petri Net

当我们编写有色 Petri 网 (CP-Net) 时,我们是否可以在声明部分使用 java 代码,就像下面 PNML 中的示例一样,或者我们也必须在这部分考虑一个标准?下面的例子是一个 XML 表示,但是我们可以用同样的方式在 pnml 中表示吗?如果没有,你能帮我吗?我们该怎么做?谢谢,

0 投票
1 回答
196 浏览

haskell - 编译错误:“'do' 构造中的最后一条语句必须是表达式”

以下是我就餐哲学家的代码,并产生一个编译错误,说“'do' 构造中的最后一条语句必须是一个表达式:mVar2 <- newEmptyMVar mVar3” 有人可以帮我解决这个错误并让这个程序工作吗?谢谢你

0 投票
2 回答
558 浏览

c - 任何人都可以在我运行时帮助我的代码,它给出了这个错误:这里是分段错误是我的代码

0 投票
1 回答
2059 浏览

java - 如何在 Java 中使用 Mutex 解决餐饮哲学家的问题?

我的 java 项目有 3 个 java 类。有 Main、Philosoper 和 chStick。我使用布尔值 isTaken 解决了餐饮哲学家问题。

在项目 chStick.java 中,如下所示。此类控制筷子在使用或不使用。

此代码成功运行。当我使用信号量而不是布尔值 isTaken 时,它也成功运行。

我的问题是使用 Mutex 重写这个类。我尝试了很多方法,但仍然没有奏效。它必须使用 Mutex 类。

编辑:

0 投票
1 回答
2551 浏览

java - 餐饮哲学家线程和信号量

我制作了一个包含 5 个表和叉子的简单 GUI,并试图可视化这个著名的问题,但我无法完全实现。我没有得到我的代码的卡点,如果有人建议我解决这个问题,任何帮助将不胜感激并提前感谢!额外说明:还有一个错误,我猜这与我的数组创建想法有关,我有一个错误为 java.lang.ArrayIndexOutOfBoundsException: 5。