Erlang gen_server 简单使用
-module(tcp_server). -behaviour(gen_server). -export([start_link/0, init/1, handle_call/3, handle_cast/2]). start_link() -> gen_server:start_link(?MODULE, ok, []). init(ok) -> io:format("tcp_server init...\n"), {ok, []}. handle_call(Command, _From, State) -> case Command of {add, List} -> {reply, List, [List | State]}; {get} -> {reply, State, State} end. handle_cast(get, State) -> {noreply, State}.
behaviour gen_server 相当于继承了 gen_server 接口,必须实现 init,handle_call/3, handle_cast/2 函数,handle_call 是实现同步调用,handle_cast 是实现异步调用,无需等待。
使用 rebar3 shell 调用:
{ok, Pid} = tcp_server:start_link().
tcp_server init...
{ok,<0.144.0>}
2> gen_server:call(Pid, {get}).
[]
3> gen_server:call(Pid, {add, [2,4,5]}).
[2,4,5]
4> gen_server:call(Pid, {add, [6,7,8]}).
[6,7,8]
5> gen_server:call(Pid, {get}).
[[6,7,8],[2,4,5]]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论