resource server op Start_Read(i : int), End_Read(i : int) op Start_Write(i : int), End_Write(i : int) body server() write("readers and writers server is alive") var Readers : int := 0 var nobody_writing : bool := true process serving do true -> in Start_Read(i) st nobody_writing -> Readers++ write(" age=",age(),"reader",i,"has begun reading, readers=", Readers) [] End_Read(i) -> Readers-- write(" age=",age(),"reader",i,"finished reading, readers=", Readers) [] Start_Write(i) st nobody_writing and Readers = 0 -> nobody_writing := false write(" age=",age(),"WRITER",i,"has begun WRITING") [] End_Write(i) -> nobody_writing := true write(" age=",age(),"WRITER",i,"has finished WRITING") ni od end serving end server