Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -module(semaphore).
- -compile(export_all).
- start()->
- Lock = spawn(?MODULE, init, []),
- spawn(?MODULE, peer, ["this", Lock]),
- spawn(?MODULE, peer, ["andthat", Lock]).
- p(Lock) ->
- semaphore ! {p, Lock},
- receive
- go ->
- go
- end.
- v(Lock) ->
- semaphore ! {v, Lock},
- ok.
- init() ->
- unlocked().
- unlocked() ->
- receive {p, Lock} ->
- Lock ! go,
- locked(Lock)
- end.
- locked(Lock) ->
- receive
- {v, Lock} ->
- unlocked()
- end.
- peer(Text, Lock) ->
- p(Lock),
- io:format("~w~n", [Text]),
- io:format("~w~n", [Text]),
- io:format("~w~n", [Text]),
- v(Lock),
- peer(Text, Lock).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement