dining-philosopher

    1热度

    1回答

    我想用java信号量来解决哲学家用餐问题,但我被卡住了。最高ID的筷子应该可用,但它似乎总是被采取,我不知道为什么。谁能告诉我我犯了什么错误? 叉类: class Fork { public static Semaphore fork = new Semaphore(1); public int id; Fork(int id) { this.id = id; } publ

    1热度

    2回答

    我已经实现了资源层次结构解决方案到餐饮哲学家的问题。当我试图比较两个筷子的n值时,它们最终陷入僵局。但是,如果我使用它们的hashCode而不是n个值,它会顺利运行。为什么这个区别?他们在一天结束时都不是数字吗? import java.util.Random; class Chopstick { public final int n; public Chopstick(i

    0热度

    3回答

    我想解决就餐哲学家问题。所以我几乎做了整个代码,但问题是我不能初始化监视器(我已经制作了伪代码,我用C++重新编写)如此真的我无法测试该程序。任何人都可以帮助我说明monitor/mutex_init的初始化有什么问题吗? 我得到错误第18行,它是这样: 错误:为不同类型的符号 其更改为INT调用pthread_mutex_init(&显示器,NULL)的“廉政调用pthread_mutex_in

    0热度

    1回答

    我正在尝试创建多个线程并为餐饮哲学家的问题传递不同的值给每个线程。但我收到此错误: warning: cast to pointer from integer of different size 这里是我的代码: pthread_mutex_t mutex; pthread_cond_t cond_var; pthread_t philo[NUM]; int main(void) {

    -1热度

    2回答

    我正在与5个哲学家和5个筷子的经典餐饮哲学家问题。我的作业是使用1个互斥体和5个条件。我得到它的工作,但我不知道为什么哲学家1从不吃,但4,3,0吃,2吃两次。这里是我的代码(遗憾的长度): //To compile: gcc -pthread -o monitor monitor.c //To execute: ./monitor "an integer as the amount of fo

    -1热度

    1回答

    这个伪代码可以解决用餐哲学家最大平行度问题吗?这里mutex是一个二进制信号量,初始化为1.叉假定从0到(N-1)编号。总共有N位哲学家编号从0到(N-1)。 void philosopher(int i) // ith philosopher { while (true) { think(); down(&mutex); // acquire l

    1热度

    1回答

    我正在研究一个问题,我应该实现一个哲学家哲学范式的例子。 注意:是的,这是一个家庭作业,在任何人问之前。 虽然我不是要求解决方案。我很困惑,因为我的老师在下面提供的这个Philosopher函数在理论上应该工作。 wait和signal是C语言中用于OS系统调用的函数。 我一直在使用包括他们: /* Wait and Signal */ #include <signal.h> #include

    1热度

    1回答

    试图通过创建一个门卫来解决哲学家的餐饮问题,只允许4位哲学家一次性用餐,计划使用信号量但是关于它们的材料有限网络,我不知道如何增加信号量的值,一旦它已被发信号。 #define INITIAL_COUNT 1 #define MAX_COUNT 4 主() philo.doorSemaphore = CreateSemaphore( NULL, //default securit

    0热度

    1回答

    我正在处理哲学家的餐饮算法。我需要生成5个哲学家,我已经这样做了使用此代码 main() -> philos1 = spawn (?MODULE, philosopher, []), philos2 = spawn (?MODULE, philosopher, []), philos3 = spawn (?MODULE, philosopher, []),

    0热度

    1回答

    当基于Silberschatz的解决方案为餐饮哲学家问题实现监控时,似乎没有线程交错执行。我是否阻止了某些不合适的内容或者是否存在某些硬件问题?因为现在所有的哲学家都只是按照正确的顺序吃东西。 public class DiningPhilosophersMonitor { public static final int NB_OF_PHILOSOPHERS = 5; private en