首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

生产者-消费者 电脑操作系统

2012-07-04 
生产者-消费者 计算机操作系统Var mutex,empty,full:semaphore:1,n,0// 定义三个信号量buffer:array[0,.

生产者-消费者 计算机操作系统
Var mutex,empty,full:semaphore:=1,n,0;  // 定义三个信号量
    buffer:array[0,...,n-1]of item;  // 定义缓冲池,容量为n
    in,out:integer:=0,0;
    begin
        parbegin
            proceducer:begin // 生产者
                    repeat
                    .
                    .
                    .
                    producer an item nextp; // 生产一个产品
                    .
                    .
                    .
                    wait(empty);   // 申请一个空缓冲区
                    wait(mutex);  // 申请缓冲池的使用权
                    buffer(in):=nextp; // 将产品放入缓冲池中
                    in:=(in+1)mod n;  // 下一个空缓冲区地址
                    signal(mutex);  //释放缓冲池使用权
                    signal(full);  // 释放一个满缓冲区
                    until false;
                end
            consumer:begin
                    repeat
                    wait(full);
                    wait(mutex);
                    nextc:=buffer(out);
                    out:=(out+1)mod n;
                    signal(mutex);
                    signal(empty);
                    consumer the item in nextc;
                    until false;
                end
        parend
    end

热点排行