master-degree-notes/Concurrent Systems/test/Untitled.md

36 lines
540 B
Markdown

```
GLOB_MUTEX, W_MUTEX, PR_MUTEX and R_MUTEX semaphores init. at 1
R a shared register init. at 0
begin_read() :=
PRR_MUTEX.down()
R_MUTEX.down()
R++ # currently active readers
if R = 1 then
PRW_MUTEX.down()
GLOB_MUTEX.down()
R_MUTEX.up()
PRR_MUTEX.up()
return
end_read() :=
R_MUTEX.down()
R--
if R = 0 then
GLOB_MUTEX.up()
PRW_MUTEX.up()
R_MUTEX.up()
return
begin_write() :=
PRR_MUTEX.down()
PRW_MUTEX.down()
PRW_MUTEX.up()
GLOB_MUTEX.down()
return
end_write() :=
PRR_MUTEX.up()
GLOB_MUTEX.up()
return
```