一个很好的通用问题是进餐的哲学家,每个哲学家都使用与左右手邻居共享的lh和rh叉子。我将哲学家的数量增加到99,以使我的四核处理器保持忙碌。结果是大约9540个周期,一些哲学家挨饿,另一些哲学家有足够的食物和大量的思考时间!但我并不满意,所以现在我去掉了所有的互斥量和锁,并保持简单,偶数哲学家以偶数周期进食,奇数哲学家以奇数周期进食。我使用一种简单的方法来同步哲学家
while (counter < count
我的Java代码中有一个问题,它应该模拟进食磷农药的问题,这里描述了这个问题:我想要输出所有哲学家每次吃东西或思考时的当前状态。输出应该是这样的:"O (2)",其中"X“表示哲学家吃东西,"O”表示他正在思考,"o“表示他在等着吃筷子。括号中的数字表示状态已更改的哲学家的编号。我的问题是,只有哲学家1和3(有时是2和4)吃东西,而其他人总是在思考或等待分叉,并且不断重复,所以输出如下所示:
O X O