有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)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 阿拉善左旗| 五家渠市| 太仆寺旗| 图木舒克市| 卓尼县| 教育| 宁化县| 宿迁市| 九江县| 理塘县| 武夷山市| 贡嘎县| 彰化县| 夏河县| 天峻县| 密云县| 中卫市| 金堂县| 绥德县| 田阳县| 嘉鱼县| 涪陵区| 大冶市| 丹江口市| 宁陵县| 二手房| 马关县| 南靖县| 庆阳市| 灵璧县| 乌苏市| 乐平市| 苍梧县| 曲阳县| 鹿邑县| 惠水县| 襄汾县| 嵊泗县| 宜丰县| 郓城县| 湖南省|