Guest User

Untitled

a guest
Jan 16th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.73 KB | None | 0 0
  1. -module(primes).
  2. -compile(export_all).
  3.  
  4. main() ->
  5. pg:create(numbers),
  6. Server_PID = spawn(?MODULE,server,[]),
  7. register(server,Server_PID),
  8. ok.
  9.  
  10. server() -> server(2,[]).
  11. server(50,L) -> io:format("Primes: ~p~n",[L]);
  12. server(N,L) ->
  13. Num_PID = spawn(?MODULE,number,[N]),
  14. pg:join(numbers,Num_PID),
  15. pg:send(numbers,tick),
  16. receive
  17. hit ->
  18. flush(),
  19. server(N+1,L)
  20. after 100 ->
  21. server(N+1,[N|L])
  22. end.
  23.  
  24. number(N) -> receive {pg_message,_,_,tick} -> number(N,1) end.
  25. number(N,I) ->
  26. receive
  27. {pg_message,_,_,tick} ->
  28. if
  29. N =:= I ->
  30. server ! hit,
  31. number(N,1);
  32. true ->
  33. number(N,I+1)
  34. end
  35. end.
  36.  
  37. flush() ->
  38. receive _ -> flush()
  39. after 0 -> ok end.
Add Comment
Please, Sign In to add comment