问题描述
我正在设计一个程序,该程序将使用 exec
创建多个进程,然后使用套接字创建与它们的连接,我有多种选择,但我不知道哪个更好。
每个子进程都将有大约 3 个服务要与服务器通信。
- 我是否应该创建 3 个套接字并将每个孩子连接到这些套接字,并在连接开始时区分它们发送
ID
/temp/service{1|2|3}.sock
。 - 我是否应该为每个孩子
/temp/{ID}/service{1|2|3}.sock
创建 3 个新套接字。
第二个选项似乎更好一些,因为我不必在连接开始时告诉服务器我是谁,它隐含在套接字的名称中,每个服务都有自己的套接字但我没有知道为每个孩子创建 3 个套接字是否效率低下。
解决方法
有趣的问题。以下是我的想法:
(围绕选项 1)
如果您有大量流量通过这些套接字,那么在某些时候它们可能会成为瓶颈。如果情况并非如此(低流量),则选项 1 会起作用。
(围绕选项 2)
设 N 为在给定时间范围内创建的子进程数。如果 N * 3 >(您机器上的文件描述符总数),在相同的时间范围内,那么选项 2 似乎不合适。
如果您还可以考虑文件描述符回收率,那么整体评估的准确性会更高。
(总体)
我会考虑这 2 个权衡并基于此做出决定。如果没有一些数字,就很难做出明智的决定。