【发布时间】:2017-07-04 17:23:40
【问题描述】:
在 Erlang 中是否允许一个进程读取而另一个进程写入套接字? 我已经尝试过了,它似乎可以工作,但我想知道它是否万无一失。
【问题讨论】:
-
谢谢大家的回答。 Summa summarum:多个进程写入是安全的,但只有一个进程可以从套接字读取。
标签: erlang
在 Erlang 中是否允许一个进程读取而另一个进程写入套接字? 我已经尝试过了,它似乎可以工作,但我想知道它是否万无一失。
【问题讨论】:
标签: erlang
根据我从源代码中的理解,(至少是 gen_tcp)套接字发送/接收归结为用于发送的 erlang:port_command 和用于套接字端口上的接收的 erlang:port_control(参见 prim_inet.erl )。
对于port_command:“如果端口忙,调用进程将暂停,直到端口不再忙。” port_control 也是一个同步操作。
如果我错了,请纠正我,但使用多个进程读取和写入套接字似乎是完全安全的。
【讨论】:
我很确定我记得这样做没有任何问题。
【讨论】:
他们中的任何人都可以写,但如果你的所有进程都可以接收,那就没有意义了。它会溢出所有不期待消息的邮箱。您只需要定义一个Pid来接收数据包,默认情况下它是创建套接字的任何Pid。您可以通过设置控制进程来设置任何Pid来控制套接字。
【讨论】: