- 进程间的消息传递是异步的。
- 信箱的大小是没有上限的。
- gen_server:call/2 的默认应答等待超时为 5 秒。
- gen_server:
-module(tcp_rpc_server). -behaviour(gen_server). %% API -export([ start_link/1, start_link/0, get_count/0, stop/0 ]). -export([ init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3 ]). -define(SERVER, ?MODULE). -define(DEFAULT_PORT, 1055). -record(state, {port, lsock, request_count = 0}). start_link() -> start_link(?DEFAULT_PORT). start_link(Port) -> gen_server:start_link({local, ?SERVER}, ?MODULE, [Port], []). get_count() -> gen_server:call(?SERVER, get_count). stop() -> gen_server:call(?SERVER, stop). init([Port]) -> {ok, LSock} = gen_tcp:listen(Port, [{active, true}]), {ok, #state{port = Port, lsock = LSock}, 0}. %% 超时值:将超时值置为0就是让gen_server容器在init/1结束后立即触发一次超时,从而迫使进程在完成初始化之后第一时间处理超时消息。 handle_call(get_count, _Fr
《Erlang/OTP并发编程实战》第三章 开发基于 TCP 的 RPC 服务
最新推荐文章于 2022-11-08 14:43:59 发布