我正在研究一个小型网络系统原型,在它的最低层,有一个软件“父”进程,与5个软件“子”进程来回通信。
我正在使用ZeroMQ在进程之间进行通信。
我的问题是多线程处理与单线程处理的问题。
在这种系统中,父线程中处理往来于子进程的消息的单个线程会比5个线程(每个进程一个线程)更有效吗?
对于单线程,我担心的是,当父进程处理一条消息时,消息将开始堆积。
对于多线程,如果扩展这个系统架构,我会关注上下文切换和性能问题。想想50位家长,每件5条,所以至少250条。
线程被写入ZeroMQ标准,没有锁、关键部分、共享内存等等。
我使用Linux和C++。
发布于 2018-09-11 20:46:13
您可以在父服务器上运行消息队列,这也应该允许它在按照事件到达的顺序处理事件时,不会被子队列淹没。此外,您可以将其扩展到一个简单的发送-确认模型,在该模型中,子节点将等待消息被确认,然后再发送进一步的消息,这样您就可以允许父消息控制其接收消息的速率。
关于要运行的线程数,我同意您的意见,因为您增加了父程序的复杂性。
主要的因素,我相信,将是线程需要共享任何数据,或相互通信。如果不是这样,问题就简化了,因为您可以使用每一个或更多个子线程,只需从队列中获取消息。
https://stackoverflow.com/questions/52225430
复制相似问题