メモ5-gen_server
1257 ワード
先着コード
実装gen_サーバモードは、[init/1,handle_call/3,handle_cast/2,handle_info/2,terminate/2,code_change/3]の6つのインタフェースを実現する必要がある.
init/1:start_link呼び出し後、この関数を自分でコールバックします.handle_call/3:gen_server:call(Name,Request)ドライバの最初のパラメータは?MODULEはPidであってもよく、2番目のパラメータはメタグループがhandle_であるcallの最初のパラメータhandle_cast/2:gen_server:castドライバとhandle_コールと同じだhandle_info/2:このシステムの内部のメッセージは駆動して、あるいはメッセージは来て、例えばsend!.具体的にどのような方法があるのか,深く研究しなければならない.terminate/2:プロセスが終了すると駆動する.code_change/3:コードの熱更新時に駆動する.
handle_call/3とhandle_cast/2には何か違いがありますか.2つは同じで、1つ目は戻り値があるようです.2つ目は私たちが必要とする戻り値がありません.
自分でこの方法で自分のモジュールをカプセル化することができるかどうか、他の場所で呼び出すのに便利で、考察して、先に覚えておきます.
-module(module_name).
-behaviour(gen_server).
-export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]).
-record(state, {}).
init([]) ->
{ok, #state{}}.
handle_call(Request, From, State) -> %% Request , ,
Reply = ok,
{reply, Reply, State}.
handle_cast(Msg, State) ->
{noreply, State}.
handle_info(Info, State) ->
{noreply, State}.
terminate(Reason, State) ->
ok.
code_change(OldVsn, State, Extra) ->
{ok, State}.
実装gen_サーバモードは、[init/1,handle_call/3,handle_cast/2,handle_info/2,terminate/2,code_change/3]の6つのインタフェースを実現する必要がある.
init/1:start_link呼び出し後、この関数を自分でコールバックします.handle_call/3:gen_server:call(Name,Request)ドライバの最初のパラメータは?MODULEはPidであってもよく、2番目のパラメータはメタグループがhandle_であるcallの最初のパラメータhandle_cast/2:gen_server:castドライバとhandle_コールと同じだhandle_info/2:このシステムの内部のメッセージは駆動して、あるいはメッセージは来て、例えばsend!.具体的にどのような方法があるのか,深く研究しなければならない.terminate/2:プロセスが終了すると駆動する.code_change/3:コードの熱更新時に駆動する.
handle_call/3とhandle_cast/2には何か違いがありますか.2つは同じで、1つ目は戻り値があるようです.2つ目は私たちが必要とする戻り値がありません.
自分でこの方法で自分のモジュールをカプセル化することができるかどうか、他の場所で呼び出すのに便利で、考察して、先に覚えておきます.
-module(module_name).
%% -type ...
%% -callback ..... ,