vault backup: 2025-04-03 18:21:35

This commit is contained in:
Marco Realacci 2025-04-03 18:21:35 +02:00
parent 89e321ee81
commit 05b428be81
2 changed files with 40 additions and 6 deletions

View file

@ -34,3 +34,37 @@ end_write() :=
GLOB_MUTEX.up()
return
```
```
monitor RW_READERS :=
AR, WR, AW, WW, LASTW init at 0
condition CR, CW
operation begin_read() :=
if WW + AW != 0 then
CR.wait()
CR.signal()
AR++
operation end_read() :=
AR--
if AR = 0 then
CW.signal()
operation begin_write() :=
WW++
LASTW <- i
CW.signal() # wakes eventually other waiting writers *they will return false*
if (AR + AW != 0) then
CW.wait()
if LASTW
AW++
WW--
operation end_write() :=
AW--
if WW > 0 then
CW.signal()
else
CR.signal()
```