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