Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -module(primes).
- -compile(export_all).
- main() ->
- pg:create(numbers),
- Server_PID = spawn(?MODULE,server,[]),
- register(server,Server_PID),
- ok.
- server() -> server(2,[]).
- server(50,L) -> io:format("Primes: ~p~n",[L]);
- server(N,L) ->
- Num_PID = spawn(?MODULE,number,[N]),
- pg:join(numbers,Num_PID),
- pg:send(numbers,tick),
- receive
- hit ->
- flush(),
- server(N+1,L)
- after 100 ->
- server(N+1,[N|L])
- end.
- number(N) -> receive {pg_message,_,_,tick} -> number(N,1) end.
- number(N,I) ->
- receive
- {pg_message,_,_,tick} ->
- if
- N =:= I ->
- server ! hit,
- number(N,1);
- true ->
- number(N,I+1)
- end
- end.
- flush() ->
- receive _ -> flush()
- after 0 -> ok end.
Add Comment
Please, Sign In to add comment