Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Erlang 0.42 KB | None | 0 0
  1. -module(semaphore).
  2. -compile(export_all).
  3.  
  4. start()->
  5.     register(semaphore, spawn(?MODULE, init, [])).
  6.  
  7. p(Lock) ->
  8.     semaphore ! {p, Lock, self()},
  9.     receive
  10.         go ->
  11.             go
  12.     end.
  13.  
  14. v(Lock) ->
  15.     mutex ! {v, Lock, self()},
  16.     ok.
  17.  
  18. init() ->
  19.     unlocked(Lock).
  20.  
  21. unlocked(Lock) ->
  22.     receive {p, From} ->
  23.             From ! go,
  24.             locked(Lock,From)
  25.     end.
  26.  
  27. locked(Lock, From) ->
  28.     receive
  29.         {v, From} ->
  30.             unlocked(Lock)
  31.     end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement