際際滷
Search
Submit Search
Gen server
1 like
554 views
Yuri Zhloba
1 of 50
Download now
Download to read offline
More Related Content
Gen server
1.
gen_server 亠于亠 于仆亳 亠于亠舒 豫舒
仍仂弍舒 亟仍 Belarus Erlang User Group
2.
亠 亳亰舒仍亳, 于亠
亰仆舒ム, 于亠 亳仗仂仍亰ム. 仂仆亳仄舒仆亳亠 亠弍亠 仆亠从仂仂 亳仍亳亶. 丼仂弍 仗仂仆, 仍亠 于亠亞仂 仆舒仗亳舒 gen_server 舒仄仂仄 :)
3.
仗亳舒仆 于仂-于亠 从仆亳亞舒
仗仂 Erlang 亢仂 仄仂仆亞 Programming Erlang, 16- 亞仍舒于舒 个亠亟 丱亠弍亠 LYSE, 亞仍舒于舒 What is OTP?
4.
舒亰仂于亶 仗舒亠仆 OTP supervisor,
gen_event, gen_fsm 亠舒仍亳亰仂于舒仆 舒仆舒仍仂亞亳仆仂, 仆仂 亰从仂 仗亠亳舒仍亳亰亳仂于舒仆仆.
5.
亳仍仂亢亠仆亳亠 stdlib /usr/local/lib/erlang/lib/stdlib-1.19.4
6.
gen_server http://www.erlang.org/doc/man/gen_server.html proc_lib http://www.erlang.org/doc/man/proc_lib.html sys http://www.erlang.org/doc/man/sys.html gen 仆亠 亟仂从仄亠仆亳仂于舒仆
7.
gen_server:start_link(...)
8.
gen_server:call(...)
9.
gen_server:cast(...)
10.
gen_server API start_link/3, start_link/4, start/3,
start/4
11.
Callback 仆从亳亳 init 弍仍仂从亳亠 仂亟亳亠仍从亳亶
仗仂亠 timeout = infinity 亟仂仍亢仆舒 弍 仍亠亞从仂于亠仆仂亶 仆亠 亟仂仍亢仆舒 从舒亳 :)
12.
Callback 仆从亳亳 init 仂仍仂亢亠仆仆舒 亳仆亳亳舒仍亳亰舒亳,
于舒亳舒仆 1 init(Args) -> State = ... self() ! heavy_init, {ok, State}. handle_info(heavy_init, State) -> NewState = ... {noreply, NewState};
13.
Callback 仆从亳亳 init 仂仍仂亢亠仆仆舒 亳仆亳亳舒仍亳亰舒亳,
于舒亳舒仆 2 init(Args) -> State = ... {ok, State, 0}. handle_info(timeout, State) -> NewState = ... {noreply, NewState};
14.
Callback 仆从亳亳 handle_call 8 于舒亳舒仆仂于
仂于亠舒
15.
Callback 仆从亳亳 {reply, Reply,
NewState} {reply, Reply, NewState, Timeout} {reply, Reply, NewState, hibernate} {noreply, NewState} {noreply, NewState, Timeout} {noreply, NewState, hibernate} {stop, Reason, Reply, NewState} {stop, Reason, NewState}
16.
Callback 仆从亳亳 handle_call(...) -> gen_server:reply(From,
Reply), {noreply, NewState}
17.
Callback 仆从亳亳 handle_cast, handle_info 4
于舒亳舒仆舒 仂于亠舒
18.
Callback 仆从亳亳 {noreply, NewState} {noreply,
NewState, Timeout} {noreply, NewState, hibernate} {stop, Reason, NewState}
19.
Callback 仆从亳亳 format_status 仂仄亳亠 crash
report
20.
Callback 仆从亳亳 [{data, [{"State",
State}]}], [{data, [{"State", get_important_part_of(State)}]},
21.
Timeout & hibernate init handle_call handle_cast handle_info
22.
Timeout & hibernate init(Args)
-> State = ..., {ok, State, 5 * 60 * 1000}. handle_info(timeout, State) -> io:format("~p no messages", [?MODULE]), {noreply, State, hibernate}.
23.
Timeout & hibernate Hibernate 仂亠
亰舒仆亳仄舒亠 仄亳仆亳仄仄 仗舒仄亳: - 仂弍舒于舒亠 亠从 - 仗仂于仂亟亳 弍仂从舒 仄仂舒 - 亟亠舒亞仄亠亳亠 从舒
24.
Timeout & hibernate Hibernate 仂亠
亠亟从仂 仗仂仍舒亠 仂仂弍亠仆亳, 弍仂仍 舒 于亠仄亠仆亳 仗仂于仂亟亳 于 仂亢亳亟舒仆亳亳.
25.
仍舒亟从舒 仗仂仄仂
sys > sys:trace(e_prof, true). ok > e_prof:add_action("some", 5). *DBG* e_prof got cast {add_action,"some",5} *DBG* e_prof new state {state,[{action_accum,[115,111,109,101],[5]}], [{action_stat_set,{16,15,4},[]},{action_stat_set,{16,14,4},[]}, {action_stat_set,{16,13,4},[]},{action_stat_set,{16,12,4},[]}, {action_stat_set,{16,11,4},[]}]} ok > e_prof:add_action("some", 15). *DBG* e_prof got cast {add_action,"some",15} *DBG* e_prof new state {state,[{action_accum,[115,111,109,101], [15,5]}],[{action_stat_set,{16,15,4},[]},{action_stat_set,{16,14,4}, []},{action_stat_set,{16,13,4},[]},{action_stat_set,{16,12,4},[]}, {action_stat_set,{16,11,4},[]}]} ok > sys:trace(e_prof, false). ok sys:trace(Name, Flag)
26.
仍舒亟从舒 仗仂仄仂
sys > sys:statistics(e_prof, true). ok > sys:statistics(e_prof, get). {ok,[{start_time,{{2014,6,18},{16,14,43}}}, {current_time,{{2014,6,18},{16,17,10}}}, {reductions,360}, {messages_in,5}, {messages_out,0}]} > sys:statistics(e_prof, false). ok sys:statistics(Name, Flag)
27.
仍舒亟从舒 仗仂仄仂
sys > sys:get_state(e_prof). {state,[], [{action_stat_set,{16,21,4},[]}, {action_stat_set,{16,20,4},[]}, {action_stat_set,{16,19,4},[]}, {action_stat_set,{16,18,4},[]}, {action_stat_set,{16,17,4},[]}]} sys:get_state(Name) -> State
28.
仍舒亟从舒 仗仂仄仂
sys > sys:get_status(e_prof). {status,<0.136.0>, {module,gen_server}, [[{'$ancestors',[e_prof_sup,<0.134.0>]}, {'$initial_call',{e_prof,init,1}}], running,<0.135.0>, [{statistics,{{{2014,6,18},{16,14,43}}, {reductions,3590}, 4,0}}], [{header,"Status for generic server e_prof"}, {data,[{"Status",running}, {"Parent",<0.135.0>}, {"Logged events",[]}]}, {data,[{"State", {state,[], [{action_stat_set,{16,16,4}, [{action_stat,"some",10.0,15,...}]}, {action_stat_set,{16,15,4},[]}, {action_stat_set,{16,14,4},[]}, {action_stat_set,{16,13,4},[]}, {action_stat_set,{16,12,...},[]}]}}]}]]} sys:get_status(Name) -> Status
29.
仗亳仄亳亰舒亳 仗仂亳亰于仂亟亳亠仍仆仂亳 亠仄 仆舒仄
仂亠 亰仆舒, 亞亟亠 亳 从舒从 仄仂亢仆仂 仗仂舒亳 gen_server, 仂弍 舒弍仂舒仍仂 弍亠亠 :)
30.
仗亳仄亳亰舒亳 仗仂亳亰于仂亟亳亠仍仆仂亳 亳从 丱仂亞亠仆
(Lo誰c Hoguin) 仂仆仂于舒亠仍 从仂仄仗舒仆亳亳 99s 亳 舒于仂 Cowboy 亟仂从仍舒亟 仆舒 Erlang Factory 2013 Beyond OTP
31.
仗亳仄亳亰舒亳 仗仂亳亰于仂亟亳亠仍仆仂亳 丐舒从 仂
仄仂亢仆仂 亟亠仍舒 gen_server?
32.
仗亳仄亳亰舒亳 仗仂亳亰于仂亟亳亠仍仆仂亳 丐舒从 仂
仄仂亢仆仂 亟亠仍舒 gen_server? - 弍舒 仗仂亟亟亠亢从 亟舒仍亠仆仆 亰仍仂于
33.
仗亳仄亳亰舒亳 仗仂亳亰于仂亟亳亠仍仆仂亳 丐舒从 仂
仄仂亢仆仂 亟亠仍舒 gen_server? - 弍舒 仗仂亟亟亠亢从 亟舒仍亠仆仆 亰仍仂于 - 弍舒 proc_lib:sync_wait 亳 {ack, Pid, Result}
34.
仗亳仄亳亰舒亳 仗仂亳亰于仂亟亳亠仍仆仂亳 丐舒从 仂
仄仂亢仆仂 亟亠仍舒 gen_server? - 弍舒 仗仂亟亟亠亢从 亟舒仍亠仆仆 亰仍仂于 - 弍舒 proc_lib:sync_wait 亳 {ack, Pid, Result} - 弍舒 仂弍舒弍仂从 亳从仍ム亠仆亳亶 try...catch
35.
仗亳仄亳亰舒亳 仗仂亳亰于仂亟亳亠仍仆仂亳 丐舒从 仂
仄仂亢仆仂 亟亠仍舒 gen_server? - 弍舒 仗仂亟亟亠亢从 亟舒仍亠仆仆 亰仍仂于 - 弍舒 proc_lib:sync_wait 亳 {ack, Pid, Result} - 弍舒 仂弍舒弍仂从 亳从仍ム亠仆亳亶 try...catch - 弍舒 monitor/demonitor
36.
仗亳仄亳亰舒亳 仗仂亳亰于仂亟亳亠仍仆仂亳 丐舒从 仂
仄仂亢仆仂 亟亠仍舒 gen_server? - 弍舒 仗仂亟亟亠亢从 亟舒仍亠仆仆 亰仍仂于 - 弍舒 proc_lib:sync_wait 亳 {ack, Pid, Result} - 弍舒 仂弍舒弍仂从 亳从仍ム亠仆亳亶 try...catch - 弍舒 monitor/demonitor - 仆亠 仗仂亟亟亠亢亳于舒 Timeout 亳 hibernate
37.
仗亳仄亳亰舒亳 仗仂亳亰于仂亟亳亠仍仆仂亳 仂亢仆仂 仆舒
10-20% 于亠仍亳亳 仗仂亳亰于仂亟亳亠仍仆仂, 仗仂亢亠于仂于舒于 仆舒亟亠亢仆仂.
38.
仗亳仄亳亰舒亳 仗仂亳亰于仂亟亳亠仍仆仂亳 弌仂亳 仂仆仂
仂亞仂? 仍亳 亟舒, 仂 亳舒亶亠 仗仂 special processes 于 亟仂从仄亠仆舒亳亳, 仄仂亳亠 仗亳仄亠 亳 亟亠仍舒亶亠
39.
Special processes 舒 仆亳
仗仂仂亠仆舒 亳仆舒从舒 OPT gen_server, gen_*, supervisor 仂 于亠 仂仆亳 c仂亰亟舒ム 亠亠亰 proc_lib:start_link
40.
Special processes 丱舒仆 亳仆
仂 仂亟亳亠仍从亳 仗仂亠舒 仗仂亟亟亠亢亳于舒ム 仂仍舒亟从 亠亠亰 sys 仂于亠舒ム 仆舒 亳亠仄仆亠 仂仂弍亠仆亳
41.
亠从仂仄亠仆亟舒亳亳 仗仂 gen_server init
亟仂仍亢亠仆 弍 仗仂仄 亳 弍仄 礀亠仍 亳仆亳亳舒仍亳亰舒亳 亟亠仍舒亠仄 仂仍仂亢亠仆仂 仆亠 从舒亳仄 :)
42.
亠从仂仄亠仆亟舒亳亳 仗仂 gen_server catch
all 亟仍 于亠 handle_call, handle_cast, handle_info 仗亳亠仄 于 仍仂亞 于仄亠仂 仂亞仂, 仂弍 从舒亳 亳 亠 仂仂礌亳亠
43.
亠从仂仄亠仆亟舒亳亳 仗仂 gen_server 亳亰弍亠亞舒亠仄
timeout = infinity 仂 亰舒亟仆磳 亟亳舒亞仆仂亳从 dead lock
44.
亠从仂仄亠仆亟舒亳亳 仗仂 gen_server 亳仗仂仍亰亠仄
call 仂仍从仂 从仂亞亟舒 亟亠亶于亳亠仍仆仂 仆亢亠仆 仂于亠 cast 弍亠亠 亳 仆亠 弍仍仂从亳亠 从仍亳亠仆从亳亶 仗仂亠
45.
亠从仂仄亠仆亟舒亳亳 仗仂 gen_server my_server
! Msg handle_info(Msg, State) 仗仍仂仂亶 亳仍
46.
亠从仂仄亠仆亟舒亳亳 仗仂 gen_server init
从仂仆从仂 terminate 亟亠从仂 仂于仂弍仂亢亟舒亶亠 亠 亟舒亶亠 terminate 亟仂舒仂仆仂 于亠仄亠仆亳
47.
亠从仂仄亠仆亟舒亳亳 仗仂 gen_server -spec
亟仍 handle_* 亞仂仄仂亰亟从亳亶 亳 仆亠 仆亢仆亶 仆亠 仗仂仄仂亞舒亠 仆亳 从舒从 亟仂从仄亠仆舒亳 仆亳 从舒从 仂仗仂舒 亟仍 dialyzer
48.
亠从仂仄亠仆亟舒亳亳 仗仂 gen_server -spec
亟仍 handle_* 仆仂 亠仍亳 仂亳亠, 仂 仄亠仆 亠 亟仂弍仆仂亠 亠亠仆亳亠 :)
49.
仂仗仂?
50.
仂亶 弍仍仂亞 yzh44yzh.by
Download