Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.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
Linux 1个线程与5个线程用于分布式系统通信?_Linux_Multithreading_Network Programming_Zeromq_Distributed System - Fatal编程技术网

Linux 1个线程与5个线程用于分布式系统通信?

Linux 1个线程与5个线程用于分布式系统通信?,linux,multithreading,network-programming,zeromq,distributed-system,Linux,Multithreading,Network Programming,Zeromq,Distributed System,我正在研究一个小型网络系统原型,在它的最低级别,有一个软件“父”进程,它与5个软件“子”进程进行来回通信 我正在使用ZeroMQ在进程之间进行通信 我的问题是多线程处理与单线程处理的问题 在这种系统中,父线程中处理子线程之间的消息发送、接收和处理的单个线程是否比5个线程(每个进程1个线程)更高效 对于单线程,我担心当父线程处理一条消息时,消息会开始堆积 对于多线程,我关心的是如果扩展这个系统架构,上下文切换和性能影响。假设50个家长在5线程一件,所以至少250线程 线程在没有锁、关键部分、共享内

我正在研究一个小型网络系统原型,在它的最低级别,有一个软件“父”进程,它与5个软件“子”进程进行来回通信

我正在使用ZeroMQ在进程之间进行通信

我的问题是多线程处理与单线程处理的问题

在这种系统中,父线程中处理子线程之间的消息发送、接收和处理的单个线程是否比5个线程(每个进程1个线程)更高效

对于单线程,我担心当父线程处理一条消息时,消息会开始堆积

对于多线程,我关心的是如果扩展这个系统架构,上下文切换和性能影响。假设50个家长在5线程一件,所以至少250线程

线程在没有锁、关键部分、共享内存等的情况下写入


我使用Linux和C++。

< P>你可以在父服务器上运行消息队列,这也允许它在处理事件时不受孩子们的影响。此外,您可以将其扩展为一个简单的发送确认模型,在该模型中,孩子们将在发送更多消息之前等待他们的消息被确认,因此您可以允许家长控制其接收消息的速率

关于要运行的线程数量,我同意你的看法,随着你扩展父程序的复杂性,它会增加


我认为,主要因素将是线程是否需要彼此共享任何数据或通信。如果不是这样的话,问题就会简化,因为您可以每1个或多个孩子使用1个线程,只需从队列中抓取消息。

我接受了您的答案。我们决定使用单个I/O线程和主进程协同工作。从长远来看,它似乎更具可扩展性。