State用来存数据, 任何erlang term都行
gen_server:start_link()是同步的, gen_server没有初始化完毕, 是不会返回的.
如果在supervision tree中, 就用gen_server:start_link.
如果是独立gen_server, 则用gen_server:start.
gen_server:start_link({local, ch3}, ch3, [], []) => {ok, Pid}
第一个参数表示本地(local方式)建立一个名为ch3的进程.
第二个参数表示回调函数(比如handle_call, handle_cast)所在的模块.
gen_server:start_link()是同步的, gen_server没有初始化完毕, 是不会返回的.
如果在supervision tree中, 就用gen_server:start_link.
如果是独立gen_server, 则用gen_server:start.