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

427 B

GLOB_MUTEX and R_MUTEX semaphores init. at 1
R a shared register init. at 0

begin_read() :=
	PR_MUTEX.down()
	R_MUTEX.down()
	R++ # currently active readers
	if R = 1 then GLOB_MUTEX.down()
	R_MUTEX.up()
	PR_MUTEX.up()
	return

end_read() :=
	R_MUTEX.down()
	R--
	if R = 0 then GLOB_MUTEX.up()
	R_MUTEX.up()
	return

begin_write() :=
	PR_MUTEX.down()
	GLOB_MUTEX.down()
	return

end_write() :=
	GLOB_MUTEX.up()
	return