Guest User

Untitled

a guest
Jun 21st, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.69 KB | None | 0 0
  1. ::::::::::::::
  2. t.erl
  3. ::::::::::::::
  4. -module(t).
  5. -export([go/0, l/0, run/1]).
  6.  
  7. %% @doc load
  8. l()->
  9. net_adm:ping('a@ak-desktop'),
  10. net_adm:ping('b@ak-desktop'),
  11. net_adm:ping('c@ak-desktop').
  12.  
  13. go()->
  14. [{N,timer:tc(fun run/2, [N,10000 div N])} || N<-[1,5,20]].
  15.  
  16. run(N,R)->
  17. [rpc:parallel_eval([{t, run, [R]}]) || _<-lists:seq(1,N)].
  18.  
  19. run(R)->
  20. [X=server:foz(X) || X<-lists:seq(1,R)],
  21. ok.
  22.  
  23.  
  24.  
  25. ::::::::::::::
  26. server.erl
  27. ::::::::::::::
  28. -module(server).
  29. -export([start_link/0, foz/1]).
  30.  
  31. -behaviour(gen_server).
  32. -export([init/1, handle_call/3, handle_cast/2, handle_info/2,
  33. terminate/2, code_change/3]).
  34. -vsn(0).
  35.  
  36. -record(ate,
  37. { field = undefined :: any() %
  38. }).
  39.  
  40. -define(NAME,{global,?MODULE}).
  41.  
  42. %% @doc See: {@link start/1}
  43. start_link() -> gen_server:start_link(?NAME, ?MODULE, {}, []).
  44.  
  45. foz(X)->gen_server:call(?NAME, {foz,X}).
  46.  
  47. %% @hidden gen_server
  48. init(_Args) ->
  49. St = #ate{
  50. field = undefined
  51. },
  52. {ok, St}.
  53.  
  54. %% @hidden gen_server
  55. handle_call({foz,X}, From, St) ->
  56. worker_sup:spawn(From, X),
  57. %worker:start_link(From, X),
  58. {noreply, St}.
  59.  
  60. %% @hidden gen_server
  61. handle_cast(_Request, St) ->
  62. {stop, unimplemented, St}.
  63.  
  64. %% @hidden gen_server
  65. handle_info(_Info, St) ->
  66. {stop, unimplemented, St}.
  67.  
  68. %% @hidden gen_server
  69. terminate(_Reason, _St) ->
  70. ok.
  71.  
  72. %% @hidden gen_server
  73. code_change(_OldVsn, St, _Extra) ->
  74. {ok, St}.
  75.  
  76.  
  77.  
  78. ::::::::::::::
  79. sup.erl
  80. ::::::::::::::
  81. -module(sup).
  82.  
  83. -behaviour(supervisor).
  84. -export([start_link/0, init/1]).
  85. -vsn(0).
  86.  
  87.  
  88. start_link() ->
  89. supervisor:start_link(?MODULE, {}).
  90.  
  91. %% @hidden supervisor
  92. init(_Args) ->
  93. Restart = {rest_for_one, 2, 5},
  94. C0 = { server
  95. , {server,start_link,[]}
  96. , permanent
  97. , 200 % ms
  98. , worker
  99. , [server]
  100. },
  101. C1 = { worker_sup
  102. , {worker_sup,start_link,[]}
  103. , permanent
  104. , 200 % ms
  105. , worker
  106. , [worker_sup]
  107. },
  108. {ok,{Restart,[C0,C1]}}.
  109.  
  110.  
  111.  
  112.  
  113.  
  114. ::::::::::::::
  115. worker.erl
  116. ::::::::::::::
  117. -module(worker).
  118. -export([start_link/2]).
  119.  
  120. start_link(ReturnTo, X) ->
  121. {ok,spawn(fun()->foz(ReturnTo,X) end)}.
  122.  
  123. foz(ReturnTo, X) ->
  124. gen_server:reply(ReturnTo, X).
  125.  
  126.  
  127.  
  128.  
  129.  
  130. ::::::::::::::
  131. worker_sup.erl
  132. ::::::::::::::
  133. -module(worker_sup).
  134.  
  135. -behaviour(supervisor).
  136. -export([start_link/0, init/1, spawn/2]).
  137. -vsn(0).
  138.  
  139.  
  140. %% @doc Short description.
  141. start_link() ->
  142. supervisor:start_link({local,?MODULE}, ?MODULE, {}).
  143.  
  144. %% @hidden supervisor
  145. init(_Args) ->
  146. Restart = {simple_one_for_one, 2, 5},
  147. C0 = { worker
  148. , {worker,start_link,[]}
  149. , temporary
  150. , 200 % ms
  151. , worker
  152. , [worker]
  153. },
  154. {ok,{Restart,[C0]}}.
  155.  
  156. spawn(ReturnTo,X)->
  157. supervisor:start_child(?MODULE, [ReturnTo,X]).
Add Comment
Please, Sign In to add comment