Linux 1个线程与5个线程用于分布式系统通信?
我正在研究一个小型网络系统原型,在它的最低级别,有一个软件“父”进程,它与5个软件“子”进程进行来回通信 我正在使用ZeroMQ在进程之间进行通信 我的问题是多线程处理与单线程处理的问题 在这种系统中,父线程中处理子线程之间的消息发送、接收和处理的单个线程是否比5个线程(每个进程1个线程)更高效 对于单线程,我担心当父线程处理一条消息时,消息会开始堆积 对于多线程,我关心的是如果扩展这个系统架构,上下文切换和性能影响。假设50个家长在5线程一件,所以至少250线程 线程在没有锁、关键部分、共享内存等的情况下写入Linux 1个线程与5个线程用于分布式系统通信?,linux,multithreading,network-programming,zeromq,distributed-system,Linux,Multithreading,Network Programming,Zeromq,Distributed System,我正在研究一个小型网络系统原型,在它的最低级别,有一个软件“父”进程,它与5个软件“子”进程进行来回通信 我正在使用ZeroMQ在进程之间进行通信 我的问题是多线程处理与单线程处理的问题 在这种系统中,父线程中处理子线程之间的消息发送、接收和处理的单个线程是否比5个线程(每个进程1个线程)更高效 对于单线程,我担心当父线程处理一条消息时,消息会开始堆积 对于多线程,我关心的是如果扩展这个系统架构,上下文切换和性能影响。假设50个家长在5线程一件,所以至少250线程 线程在没有锁、关键部分、共享内
我使用Linux和C++。
< P>你可以在父服务器上运行消息队列,这也允许它在处理事件时不受孩子们的影响。此外,您可以将其扩展为一个简单的发送确认模型,在该模型中,孩子们将在发送更多消息之前等待他们的消息被确认,因此您可以允许家长控制其接收消息的速率 关于要运行的线程数量,我同意你的看法,随着你扩展父程序的复杂性,它会增加我认为,主要因素将是线程是否需要彼此共享任何数据或通信。如果不是这样的话,问题就会简化,因为您可以每1个或多个孩子使用1个线程,只需从队列中抓取消息。我接受了您的答案。我们决定使用单个I/O线程和主进程协同工作。从长远来看,它似乎更具可扩展性。