有3個并發(fā)進(jìn)程R、M、P,它們共享同一個緩沖區(qū),假定緩沖區(qū)只能存放一條記錄。進(jìn)程R負(fù)責(zé)從輸入設(shè)備讀信息,每讀入一個記錄后,就把它放進(jìn)緩沖區(qū);進(jìn)程 M在緩沖區(qū)中加工讀入的記錄;進(jìn)程P把加工后的記錄打印輸出。讀入的記錄經(jīng)加工輸出后,緩沖區(qū)又可以存放下一個記錄。試寫出他們能夠正確執(zhí)行的并發(fā)程序。

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

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

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

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

          三個進(jìn)程可如下設(shè)計:

          begin

          S1,S2,S3:semaphore;

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

          cobegin

          process R

          begin

          L1:讀記錄;

          P(S1);

          記錄存入緩沖區(qū);

          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 閱讀(220) 評論(0)  編輯  收藏

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 城固县| 武功县| 墨玉县| 涟水县| 会泽县| 建宁县| 靖西县| 华坪县| 三穗县| 松潘县| 浪卡子县| 吐鲁番市| 彰化县| 沾益县| 诏安县| 阿拉善左旗| 邵阳县| 邮箱| 阿图什市| 嘉鱼县| 四子王旗| 横山县| 西乌珠穆沁旗| 疏附县| 望奎县| 黄骅市| 分宜县| 吴川市| 门源| 牡丹江市| 扎赉特旗| 琼结县| 汾阳市| 临城县| 安仁县| 浪卡子县| 丰镇市| 辽中县| 彰武县| 呼伦贝尔市| 临湘市|