- var Rcount:integer;
- Rmutex,Wmutex:semaphore;
- Rcount := 0;
- Rmutex := 1;
- Wmutex := 1;
- codebegin
- process reader
- begin
- P(Rmutex)
- if Rcount = 0 then P(Wmutex)
- Rcount := Rcount + 1;
- V(Rmutex)
- 读文件
- P(Rmutex)
- Rcount := Rcount - 1;
- if Rcount = 0 then V(Wmutex)
- V(Rmutex)
- end
- process writer
- begin
- P(Wmutex)
- 写文件
- V(Wmutex)
- end
- codeend