gpt4 book ai didi

sockets - 在 erlang 中编写并行 TCP 服务器

转载 作者:可可西里 更新时间:2023-11-01 02:35:18 25 4
gpt4 key购买 nike

“Programming Erlang Software for a Concurrent World”说写一个并行的 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) 的东西吗?

最佳答案

如果您从 shell 运行 start_parallel_server(),shell 进程将拥有监听套接字,因此只要 shell 进程处于事件状态,它就会保持事件状态。请注意,shell 进程会因异常而死亡,并且会重新生成一个新的 shell 进程……这可能会造成混淆。

但是如果你例如生成一个新进程,该进程依次调用 start_parallel_server() 函数,您需要在该生成的进程中休眠以使其保持事件状态。

关于sockets - 在 erlang 中编写并行 TCP 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20141914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com