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