「二郎編程軟件的並行世界」並行TCP服務器說寫一個並行TCP服務器這樣做:寫作二郎
start_parallel_server() ->
{ok, Listen} = gen_tcp:listen(...),
spawn(fun() -> par_connect(Listen) end).
par_connect(Listen) ->
{ok, Socket} = gen_tcp:accept(Listen),
spawn(fun() -> par_connect(Listen) end),
loop(Socket).
loop(...) -> %% handle request here
當start_parallel_server
完成其工作,將關閉監聽套接字。我們是不是應該在末尾加上timer:sleep(infinity)
這樣的東西?
什麼?爲什麼?哪裏? –
@ Hynek-Pichi-Vychodil gen_tcp將鏈接到調用'gen_tcp:listen'的進程。在spawn(fun() - > par_connect(Listen)結束)之後,當這個過程停止時,那麼偵聽套接字也將被關閉。我想我們應該在'start_parallel_server()'末尾添加'timer:sleep(infinity)',這樣它就不會完成。 –