Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更好的做法是创建一个具有多个连接的unix套接字,还是创建具有一个连接的多个套接字?_Unix_Architecture_Unix Socket - Fatal编程技术网

更好的做法是创建一个具有多个连接的unix套接字,还是创建具有一个连接的多个套接字?

更好的做法是创建一个具有多个连接的unix套接字,还是创建具有一个连接的多个套接字?,unix,architecture,unix-socket,Unix,Architecture,Unix Socket,我正在设计一个程序,它将使用exec创建多个进程,然后使用套接字创建与它们的连接,我有多个选择,但我不知道哪一个更好 每个子进程将有大约3个服务要与服务器通信 我是否应该创建一个3个套接字,将每个孩子连接到这些套接字,并在连接开始时发送/temp/service{1 | 2 | 3}.sock时区分它们 我应该为每个子/temp/{ID}/service{1 | 2 | 3}.sock创建3个新套接字吗 第二个选项似乎更好一些,因为我不必在连接启动时告诉服务器我是谁,它隐含在套接字的名称中,每

我正在设计一个程序,它将使用
exec
创建多个进程,然后使用套接字创建与它们的连接,我有多个选择,但我不知道哪一个更好

每个子进程将有大约3个服务要与服务器通信

  • 我是否应该创建一个3个套接字,将每个孩子连接到这些套接字,并在连接开始时发送
    /temp/service{1 | 2 | 3}.sock
    时区分它们
  • 我应该为每个子
    /temp/{ID}/service{1 | 2 | 3}.sock
    创建3个新套接字吗

  • 第二个选项似乎更好一些,因为我不必在连接启动时告诉服务器我是谁,它隐含在套接字的名称中,每个服务都有自己的套接字,但我不知道为每个孩子创建3个套接字是否效率低下。

    有趣的问题。以下是我对它的看法:

    (关于备选方案1)

    如果通过这些套接字的流量很大,那么在某个时候它们可能会成为瓶颈。如果情况并非如此(低流量),则选项1将起作用

    (关于方案2)

    设N为给定时间范围内创建的子进程数。如果N*3>(您机器上的文件描述符总数)在同一时间段内,那么选项2显然不适合

    如果您还可以考虑文件描述符的回收率,那么总体评估将更加准确

    (总体)


    我会考虑这两个权衡,并据此做出决定。如果没有一些数字,就很难做出明智的决定。

    非常感谢你的回答,这让我思考,如果有人决定回答,我会等着接受你的答案。在使用
    socketpair()
    分叉孩子之前,先创建套接字,就像使用
    pipe()一样
    ?我不明白你的意思,我用的是Golang,它用的是另一种方法