从两个进程访问套接字

时间:2010-09-04 02:08:13

标签: erlang

是否允许在Erlang中读取一个进程并将另一个进程写入套接字? 我试过了它似乎工作但我想知道它是否万无一失。

3 个答案:

答案 0 :(得分:3)

正如我从源代码中理解的那样,一个(gen_tcp,至少)套接字send / recv归结为发送的erlang:port_command和套接字端口上recv的erlang:port_control(参见prim_inet.erl) )。

对于port_command:“如果端口忙,则呼叫进程将暂停,直到端口不再忙。” port_control也是同步操作。

如果我错了,请纠正我,但使用多个进程读取和写入套接字似乎是完全安全的。

答案 1 :(得分:1)

我很确定我记得这样做没有任何问题。

答案 2 :(得分:1)

他们中的任何人都可以写作,但如果您的所有流程都能收到,那就没有意义。它会溢出所有不期待消息的邮箱。您只需要定义一个Pid来接收数据包,默认情况下它是创建套接字的Pid。您可以通过设置控制进程来设置任何Pid来控制套接字。