哲学家就餐问题读书报告

哲学家就餐问题读书报告

问:哲学家进餐问题的算法与实现
  1. 答:哲学含烂家进餐问题描述:
    5个哲学家围坐在一张圆桌周围,仔老首每个哲学家面前有一碟通心面,要使用筷子才能进餐。相邻两个碟子之间有一根筷子。哲学家包含三种状态:吃饭、思考和挨饿。念数当一个哲学家觉得饿时,他才试图分两次去取他左边和右边的筷子就餐,吃完以后放下筷子继续思考。
    哲学家进餐问题算法描述:
    采用信号量机制解决哲学家进餐问题
    解决方案:规定在拿到左侧的筷子后,先检查右面的筷子是否可用。如果不可用,则先放下左侧筷子, 等一段时间再重复整个过程。
    哲学家进餐问题C代码实现:
    semaphore chopstick[5]={1,1,1,1,1};
    void philosopher(int i)
    {
    while(true)
    {
    think();
    if(i%2 == 0) //偶数哲学家,先右后左。
    {
    wait (chopstick[ i + 1 ] mod 5) ;
    wait (chopstick[ i]) ;
    eat();
    signal (chopstick[ i + 1 ] mod 5) ;
    signal (chopstick[ i]) ;
    }
    Else //奇数哲学家,先左后右。
    {
    wait (chopstick[ i]) ;
    wait (chopstick[ i + 1 ] mod 5) ;
    eat();
    signal (chopstick[ i]) ;
    signal (chopstick[ i + 1 ] mod 5) ;
    }
    }
问:哲学家就餐问题
  1. 答:因为是一张圆的桌子,桌段吵子坐五个人,每个人的右手边有一支筷子(桌子上共握掘侍5只),2号坐在1号的左边,那么1号拿左手边的筷子和2号拿右手边的筷散简子便是取同一支筷子,3,4号同理。
    点反对的人是非要我补这张图么?看清楚题主问的什么好伐?有要代码么?一天就知道上网找代码抄不会自己写的也是人才
问:生产者消费者问题,哲学家进餐问题学到了什么
  1. 答:线程。生产者消费者问题,也称有限缓冲问题,是一个多线程同步问题的经典案例。该问题描述了共享固定大小缓冲区的两个线程——即所谓的“生产者”和“消费贺缓漏者”——在实际运行时会发生的问题。生产者的主要作用是生哪贺成一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲区禅烂消耗这些数据。该问题的关键就是要保证生产者不会在缓冲区满时加入数据,消费者也不会在缓冲区中空时消耗数据。
哲学家就餐问题读书报告
下载Doc文档

猜你喜欢