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

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


          網站導航:
           
          主站蜘蛛池模板: 阆中市| 密山市| 枣强县| 新闻| 宁化县| 滨州市| 察雅县| 巴林右旗| 柘城县| 锡林郭勒盟| 井陉县| 刚察县| 梧州市| 东乌珠穆沁旗| 北宁市| 贡觉县| 呼玛县| 双江| 福清市| 米脂县| 永和县| 祁阳县| 广河县| 盱眙县| 荃湾区| 饶河县| 安丘市| 兴仁县| 景泰县| 本溪市| 阳曲县| 依安县| 抚松县| 金山区| 军事| 车险| 珲春市| 德格县| 即墨市| 肇源县| 玛多县|