有3個并發進程R、M、P,它們共享同一個緩沖區,假定緩沖區只能存放一條記錄。進程R負責從輸入設備讀信息,每讀入一個記錄后,就把它放進緩沖區;進程 M在緩沖區中加工讀入的記錄;進程P把加工后的記錄打印輸出。讀入的記錄經加工輸出后,緩沖區又可以存放下一個記錄。試寫出他們能夠正確執行的并發程序。

          PV原語:
          三個進程共用一個緩沖區,他們必須同步工作,可定義三個信號量:

          S1:表示是否可把讀人的記錄放到緩沖區,初始值為1.

          S2:表示是否可對緩沖區中的記錄加工,初始值為0.

          S3:表示記錄是否加工好,可以輸出,初始值也為0.

          三個進程可如下設計:

          begin

          S1,S2,S3:semaphore;

          S1:=l;S2:=S3:=0;

          cobegin

          process R

          begin

          L1:讀記錄;

          P(S1);

          記錄存入緩沖區;

          V(S2);

          goto L1;

          end;

          process M

          begin

          L2:P(S2);

          加工記錄;

          V(S3);

          goto L2;

          end;

          process P

          begin

          L3:P(S3);

          輸出加工后的記錄;

          V(S1);

          goto L3;

          end;

          coend;

          end.
          posted on 2010-03-02 21:02 Ying-er 閱讀(222) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 手机| 柘城县| 金堂县| 家居| 洪雅县| 介休市| 内乡县| 称多县| 阿坝| 台北县| 临漳县| 芷江| 基隆市| 灵武市| 镇坪县| 丘北县| 炉霍县| 乐陵市| 泰兴市| 宁河县| 定日县| 尉氏县| 宣化县| 平南县| 依安县| 凌云县| 赤城县| 上蔡县| 承德市| 青阳县| 仁寿县| 横山县| 兴城市| 通许县| 甘孜县| 峨眉山市| 吉木萨尔县| 潢川县| 大冶市| 龙门县| 六盘水市|