Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ::::::::::::::
- t.erl
- ::::::::::::::
- -module(t).
- -export([go/0, l/0, run/1]).
- %% @doc load
- l()->
- net_adm:ping('a@ak-desktop'),
- net_adm:ping('b@ak-desktop'),
- net_adm:ping('c@ak-desktop').
- go()->
- [{N,timer:tc(fun run/2, [N,10000 div N])} || N<-[1,5,20]].
- run(N,R)->
- [rpc:parallel_eval([{t, run, [R]}]) || _<-lists:seq(1,N)].
- run(R)->
- [X=server:foz(X) || X<-lists:seq(1,R)],
- ok.
- ::::::::::::::
- server.erl
- ::::::::::::::
- -module(server).
- -export([start_link/0, foz/1]).
- -behaviour(gen_server).
- -export([init/1, handle_call/3, handle_cast/2, handle_info/2,
- terminate/2, code_change/3]).
- -vsn(0).
- -record(ate,
- { field = undefined :: any() %
- }).
- -define(NAME,{global,?MODULE}).
- %% @doc See: {@link start/1}
- start_link() -> gen_server:start_link(?NAME, ?MODULE, {}, []).
- foz(X)->gen_server:call(?NAME, {foz,X}).
- %% @hidden gen_server
- init(_Args) ->
- St = #ate{
- field = undefined
- },
- {ok, St}.
- %% @hidden gen_server
- handle_call({foz,X}, From, St) ->
- worker_sup:spawn(From, X),
- %worker:start_link(From, X),
- {noreply, St}.
- %% @hidden gen_server
- handle_cast(_Request, St) ->
- {stop, unimplemented, St}.
- %% @hidden gen_server
- handle_info(_Info, St) ->
- {stop, unimplemented, St}.
- %% @hidden gen_server
- terminate(_Reason, _St) ->
- ok.
- %% @hidden gen_server
- code_change(_OldVsn, St, _Extra) ->
- {ok, St}.
- ::::::::::::::
- sup.erl
- ::::::::::::::
- -module(sup).
- -behaviour(supervisor).
- -export([start_link/0, init/1]).
- -vsn(0).
- start_link() ->
- supervisor:start_link(?MODULE, {}).
- %% @hidden supervisor
- init(_Args) ->
- Restart = {rest_for_one, 2, 5},
- C0 = { server
- , {server,start_link,[]}
- , permanent
- , 200 % ms
- , worker
- , [server]
- },
- C1 = { worker_sup
- , {worker_sup,start_link,[]}
- , permanent
- , 200 % ms
- , worker
- , [worker_sup]
- },
- {ok,{Restart,[C0,C1]}}.
- ::::::::::::::
- worker.erl
- ::::::::::::::
- -module(worker).
- -export([start_link/2]).
- start_link(ReturnTo, X) ->
- {ok,spawn(fun()->foz(ReturnTo,X) end)}.
- foz(ReturnTo, X) ->
- gen_server:reply(ReturnTo, X).
- ::::::::::::::
- worker_sup.erl
- ::::::::::::::
- -module(worker_sup).
- -behaviour(supervisor).
- -export([start_link/0, init/1, spawn/2]).
- -vsn(0).
- %% @doc Short description.
- start_link() ->
- supervisor:start_link({local,?MODULE}, ?MODULE, {}).
- %% @hidden supervisor
- init(_Args) ->
- Restart = {simple_one_for_one, 2, 5},
- C0 = { worker
- , {worker,start_link,[]}
- , temporary
- , 200 % ms
- , worker
- , [worker]
- },
- {ok,{Restart,[C0]}}.
- spawn(ReturnTo,X)->
- supervisor:start_child(?MODULE, [ReturnTo,X]).
Add Comment
Please, Sign In to add comment