рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛
рдкрд┐рдЫрд▓реЗ рднрд╛рдЧреЛрдВ (
рднрд╛рдЧ 1 ,
рднрд╛рдЧ 2 ) рдореЗрдВ, рд╣рдордиреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдмреАрдЪ рджреНрд╡рд┐-рджрд┐рд╢рд╛рддреНрдордХ рд╕рдВрдмрдВрдз рдмрдирд╛рдиреЗ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдкреНрд░рд╕рд╛рд░ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рддрдВрддреНрд░ рдХреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬрд╛рдВрдЪ рдХреАред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдПрдХ рдХрд╛рдлреА рд╕рд░рд▓ рдореЙрдирд┐рдЯрд░ рддрдВрддреНрд░ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдЫ рдФрд░ рдкрд╣рд▓реБрдУрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдкрд░ рдирдЬрд╝рд░ рд░рдЦрддрд╛ рд╣реИ
рдореЙрдирд┐рдЯрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп
рдореЙрдирд┐рдЯрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рдЫреЛрдЯреА рд╕реВрдЪреА:
- erlang: рдореЙрдирд┐рдЯрд░ / 2 - рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреА рд╣реИ;
- рдПрд░реНрд▓рд╛рдВрдЧ: рдбреЗрдордиреАрдЯрд░ / 1/2 - рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЕрдХреНрд╖рдо рдХрд░реЗрдВ;
- erlang: spawn_monitor / 1/3 - рдПрдХ рдирдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдореЙрдирд┐рдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрд▓ рдХрд░рддреЗ рд╣реБрдП рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдмрд╛рдВрдзрдирд╛ред
рдпрджрд┐ рдЕрд╡рд▓реЛрдХрди рдХреА рдЧрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдореЙрдирд┐рдЯрд░ рдХреЛ рд╕рдВрджреЗрд╢ {'DOWN', рд╕рдВрджрд░реНрдн, рдкреНрд░рдХреНрд░рд┐рдпрд╛, Pid, тАЛтАЛрдХрд╛рд░рдг} рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ
- 'DOWN' - рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреНрд░реИрд╢ рд╣реЛ рдЧрдИ рд╣реИ;
- рд╕рдВрджрд░реНрдн - рдореЙрдирд┐рдЯрд░ рдкрд░ рд▓рд┐рдВрдХ;
- рдкреНрд░рдХреНрд░рд┐рдпрд╛ - рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ (рдкреНрд░рд▓реЗрдЦрди рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдПрд░рд▓реИрдВрдЧ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдХреЗрд╡рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рд╢рд╛рдпрдж рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╡реЗ рдХреБрдЫ рдФрд░ рдкреЗрдВрдЪ рдХрд░реЗрдВрдЧреЗ);
- рдкрд┐рдж - рдЧрд┐рд░реА рд╣реБрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдореБрдХреНрдд;
- рдХрд╛рд░рдг рдХрд╛рд░рдг рд╣реИред
рдПрдХ рдХрдиреЗрдХреНрд╢рди рдФрд░ рдореЙрдирд┐рдЯрд░ рдмрдирд╛рдиреЗ рдХреЗ рдмреАрдЪ рдПрдХ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдПрдХ рдЧреИрд░-рдореМрдЬреВрдж рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреЙрд▓рд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЧрд┐рд░ рдЬрд╛рдПрдЧреА, рдФрд░ рдПрдХ рдореЙрдирд┐рдЯрд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рддреБрд░рдВрдд {'DOWN', рд╕рдВрджрд░реНрдн, рдкреНрд░рдХреНрд░рд┐рдпрд╛, Pid, тАЛтАЛрдХрд╛рд░рдг} рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ред рдЖрдЗрдП рдЗрд╕реЗ рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рдЖрдЬрд╝рдорд╛рдПрдВ - рдПрд╕рд╣реЙрд▓ рдЪрд▓рд╛рдПрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВред
(emacs@aleksio-mobile)1> self(). <0.36.0> (emacs@aleksio-mobile)2> erlang:link(c:pid(0,777,0)). ** exception error: no such process or port in function link/1 called as link(<0.777.0>) (emacs@aleksio-mobile)3> self(). <0.39.0> (emacs@aleksio-mobile)4> flush(). ok (emacs@aleksio-mobile)5> erlang:monitor(process, c:pid(0,777,0)).
рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ, рд╣рдо рд╢реЗрд▓ рдХреЗ рдкрд┐рдб рдХреЛ рдкрд╣рдЪрд╛рдирддреЗ рд╣реИрдВ, рдлрд┐рд░ рд╣рдо рд╡рд░реНрддрдорд╛рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдореМрдЬреВрдж рди рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЗрд░рд▓реИрдВрдЧ: рд▓рд┐рдВрдХ (c: pid (0.777.0)) рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╢реЗрд▓ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рдВрджреЗрд╢ рдХрддрд╛рд░ рдЦрд╛рд▓реА рд╣реЛ рдЬрд╛рддреА рд╣реИред рдкрд╛рдВрдЪрд╡реАрдВ рдХрдорд╛рдВрдб рдПрд░рд▓реИрдВрдЧ: рдореЙрдиреАрдЯрд░ (рдкреНрд░рдХреНрд░рд┐рдпрд╛, c: pid (0,777,0)) рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИ, рдЬреЛ рдореЙрдиреАрдЯрд░ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рджреЗрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ Pid = <0.777.0> рдХреЗ рд╕рд╛рде рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реЗрд▓ рдХрддрд╛рд░ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдВрджреЗрд╢ {'DOWN', # Ref <0.0.0.43>, рдкреНрд░рдХреНрд░рд┐рдпрд╛, <0.777.0>, noproc} рдЖрддрд╛ рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ <0.777 .0> рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдирд╣реАрдВред
рд╣рдо рдореЙрдирд┐рдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреНрдЮрд╛рди рдХреЛ рдордЬрдмреВрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рдореЙрдбреНрдпреВрд▓ рд▓рд┐рдЦреЗрдВрдЧреЗред
-module(testm). -export([start_m/0, stop_m/1, loop/1]). start_m() -> erlang:spawn_monitor(?MODULE, loop, [self()]). stop_m(Ref) -> erlang:demonitor(Ref). loop(Shell) -> receive kill -> exit(kill)
рд╕реНрдкреЙрди_рдореЛрдирд┐рдЯрд░ рдлрд╝рдВрдХреНрд╢рди рдмреЙрдбреА рд▓реВрдк рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдХреЙрд▓рд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ (рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рд╢реЗрд▓ рдореЗрдВ) рдПрдХ рдореЙрдирд┐рдЯрд░ рдмрдирд╛рддрд╛ рд╣реИред
(emacs@aleksio-mobile)2> {Pid, Ref} = testm:start_m(). {<0.43.0>,
рдкрд╛рдардХреЛрдВ рд╕реЗ рд╕рд╡рд╛рд▓: рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рджреЗрдЦрд╛, рдкреНрд░рддреНрдпреЗрдХ рдирдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде, рдореЙрдирд┐рдЯрд░ рдХрд╛ рд▓рд┐рдВрдХ рднреА рдирдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдореЙрдирд┐рдЯрд░ рдХреЛ рдЕрдВрдд рдореЗрдВ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ред рдХреНрдпрд╛ рдкрд┐рдЫрд▓реЗ рд▓рд┐рдВрдХ рд╣рдорд╛рд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХрд╣реАрдВ рдмрдиреЗ рд░рд╣реЗрдВрдЧреЗ рдФрд░ рдХреНрдпрд╛ рдЗрд╕рд╕реЗ рдХрд┐рд╕реА рддрд░рд╣ рдХрд╛рдо рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?
рдирд┐рд╖реНрдХрд░реНрд╖
рд╣рдордиреЗ рдореЙрдирд┐рдЯрд░ рдХреА рдЬрд╛рдВрдЪ рдХреА - рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рдлреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рд╕рд░рд▓ рддрдВрддреНрд░ред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдПрд░реНрд▓рд╛рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рдЕрдкрдиреЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╣рд░ рдХреЛрдИ рдЙрдиреНрд╣реЗрдВ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдХреНрдпрд╛ рдкрдврд╝рдирд╛ рд╣реИ?
1.
рдЙрддреНрдХреГрд╖реНрдЯ рдСрдирд▓рд╛рдЗрди рдкреНрд░рд▓реЗрдЦрди ред
2. рдлреНрд░рд╛рдВрд╕реЗрд╕реНрдХреЛ рд╕реЗрд╕рд░рд┐рдиреА рдФрд░ рд╕рд╛рдЗрдорди рдереЙрдореНрдкрд╕рди рджреНрд╡рд╛рд░рд╛ ERLANG рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧред
3. RSDN рдкрд░ рдЕрдиреБрдЪреНрдЫреЗрдж: рдПрд░рд▓рд╛рдВрдЧ рдореЗрдВ
рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ ред