Advertisement
Guest User

Untitled

a guest
Feb 11th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Erlang 0.97 KB | None | 0 0
  1. -module(consumerproducer).
  2. -export([start/0]).
  3.  
  4. producer() ->
  5.     receive
  6.         {Pid, produce} ->
  7.             Pid ! produced,
  8.             producer();
  9.         terminate -> ok
  10.     end.
  11.  
  12.  
  13. consumer() ->
  14.     receive
  15.         {Pid, consume} ->
  16.             Pid ! consumed,
  17.             consumer();
  18.         terminate -> ok
  19.     end.
  20.  
  21.  
  22. server(Count, Producer, Consumer) ->
  23.     io:format("Count: ~w~n", [Count]),
  24.     receive
  25.         produced ->
  26.             Consumer ! {self(), consume},
  27.             server(Count + 1, Producer, Consumer);
  28.         consumed ->
  29.             Producer ! {self(), produce},
  30.             server(Count - 1,Producer, Consumer)
  31.     end.
  32.  
  33.  
  34. start_producer(1, Pid) -> Pid ! {self(), produce};
  35. start_producer(N, Pid) ->
  36.     Pid ! {self(), produce},
  37.     start_producer(N - 1, Pid).
  38.  
  39.  
  40. start() ->
  41.     ProdPid = spawn(fun producer/0),
  42.     ConsPid = spawn(fun consumer/0),
  43.     start_producer(100, ProdPid),
  44.     server(0, ProdPid, ConsPid).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement