vault backup: 2025-04-03 00:10:03
This commit is contained in:
parent
90e5cc1e91
commit
018560c352
2 changed files with 38 additions and 3 deletions
|
@ -33,4 +33,39 @@ end_write() :=
|
|||
PRR_MUTEX.up()
|
||||
GLOB_MUTEX.up()
|
||||
return
|
||||
```
|
||||
|
||||
```
|
||||
monitor RW_READERS :=
|
||||
AR, WR, AW, WW init at 0
|
||||
condition CR, CW, CR_PR
|
||||
|
||||
operation begin_read() :=
|
||||
WR++
|
||||
if WW != 0 then
|
||||
CR_PR.wait()
|
||||
if AW != 0 then
|
||||
CR.wait()
|
||||
CR.signal()
|
||||
AR++
|
||||
WR--
|
||||
|
||||
operation end_read() :=
|
||||
AR--
|
||||
if AR = 0 then
|
||||
CW.signal()
|
||||
|
||||
operation begin_write() :=
|
||||
WW++
|
||||
if (AR + AW != 0) then
|
||||
CW.wait()
|
||||
AW++
|
||||
WW--
|
||||
|
||||
operation end_write() :=
|
||||
AW--
|
||||
if WR > 0 then
|
||||
CR.signal()
|
||||
else
|
||||
CW.signal()
|
||||
```
|
Loading…
Add table
Add a link
Reference in a new issue