leaf_8 2015-06-06 08:01 采纳率: 0%
浏览 2479

线程同步经典问题,和尚挑水问题

某寺庙有小和尚、老和尚若干。庙内有一水缸、由小和尚提水入缸,供老和尚饮用。水缸可容纳10桶水,每次入水、取水都为1桶,且不可同时进行。水取自同一井中,水井口很小,每次只能容纳一只水桶取水。设水桶个数为3个。试写出小和尚和老和尚的函数,假设有5个小和尚提水入缸,5个老和尚取水喝(每隔一定时间取水一次),分别用不同的线程模拟小和尚和老和尚,使他们能同步进行。(每个和尚一个线程)

  • 写回答

5条回答

  • sinat_28802461 2015-06-06 08:05
    关注

    Var mutex1, mutex2, empty, full, count: semaphore;
    mutex1:=1; mutex2:=1;
    empty:=10; full:=0; count:=3;

    process 小和尚:
    begin
    repeat
    wait(empty);
    wait(count);
    wait(mutex1);
    从井中取水;
    signal(mutex1);
    wait(mutex2);
    送水入水缸;
    signal(mutex2);
    signal(count);
    signal(full);
    until false;
    end
    process 老和尚:
    begin
    repeat
    wait(full);
    wait(count);
    wait(mutex2);
    从缸中取水;
    signal(mutex2);
    signal(empty);
    signal(count);
    until false;
    end

    评论

报告相同问题?

悬赏问题

  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退