我想我的问题相当简单。
我想知道在即将终止的进程拥有的套接字上使用 gen_tcp:close/1
是否有任何意义。连接自动关闭,并向另一端连接的进程返回 {tcp_close, Socket}
,就像调用 close
时一样,所以我猜测效果是相同的,只有当连接必须在终止前的某个时间关闭时才需要 close
。
这是正确的吗?或者有什么理由让我即使在进程即将终止时也应该尝试在套接字上使用 close
?
监听套接字或者对方连接的进程不是Erlang进程时有什么区别吗?
最佳答案
没有必要,因为正如您所观察到的,这会在退出拥有进程时自动发生。
无论如何,我通常都会努力这样做,以防万一我以后更改代码时进程不会在同一点退出。例如,打开一个套接字,读取数据,然后进行巨大的计算。如果计算量很大,会使套接字长时间打开。
很确定我曾经遇到过这种情况,但我确信如果我总是在有意义的最早时刻显式关闭我的套接字,我就不会遇到这种情况。
关于sockets - 进程终止时是否有必要关闭 gen_tcp 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23412389/