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

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


          網站導航:
           
          主站蜘蛛池模板: 囊谦县| 方山县| 潞城市| 吴忠市| 绍兴县| 丰城市| 通海县| 蓬溪县| 新兴县| 元江| 鄱阳县| 永德县| 鱼台县| 凌源市| 水城县| 浦东新区| 罗平县| 百色市| 扶风县| 赤水市| 邵东县| 九江县| 临清市| 富裕县| 栾城县| 堆龙德庆县| 霍城县| 吴堡县| 罗平县| 龙口市| 浦城县| 孟连| 突泉县| 新密市| 夏邑县| 苏尼特右旗| 阿荣旗| 扶沟县| 乐亭县| 舞阳县| 德安县|