以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 操作系统原理 』  (http://bbs.xml.org.cn/list.asp?boardid=63)
----  [求助]记录型信号量解决生产者和消费者问题  (http://bbs.xml.org.cn/dispbbs.asp?boardid=63&rootid=&id=84044)


--  作者:William_Third
--  发布时间:3/28/2010 11:14:00 PM

--  [求助]记录型信号量解决生产者和消费者问题
empty表示现有空缓冲区数
full表示现有满缓冲区数

Var mutex,empty,full:semaphore:=1,n,0;
       buffer:array[0..n-1] of item;   in,out:integer:=0,0;
Begin
  parbegin
   Producer: begin
     repeat
       produce an item in nextp;
       wait(empty);
       wait(mutex);
       buffer(in):=nextp;
       in:=(in+1) mod n;
       signal(mutex);
       signal(full);
    until false;  end
   parend  
end

consumer: begin
    repeat
       wait(full);
       wait(mutex);
       nextc:=buffer(out);
       out:=(out+1) mod n;
       signal(mutex);
       signal(empty);
       consume the item;
    until false; end

问问
若进程中wait顺序颠倒会怎样?


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
31.250ms