用于分布式系统通信的1个线程与5个线程?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用于分布式系统通信的1个线程与5个线程?相关的知识,希望对你有一定的参考价值。
我正在研究一个小型网络系统原型,它处于最低级别,有一个软件“父”进程,它与5个软件“子”进程来回通信。
我正在使用ZeroMQ在进程之间进行通信。
我的问题是多线程处理与单线程处理的问题。
在这种系统中,父进程中处理发送,接收和处理来自子进程的消息的单个线程是否比5个线程(每进程1个线程)更有效?
对于单线程,我担心当父进程处理一条消息时,消息将开始堆积。
对于多线程,如果扩展此系统架构,我会关注上下文切换和性能命中。认为50个父母一共有5个线程,所以最少250个线程。
线程被写入ZeroMQ standards,没有锁,关键部分,共享内存等。
我使用Linux和C ++。
答案
您可以在父级上运行消息队列,这也应该允许子级在按照到达的顺序处理事件时不会被子级淹没。此外,您可以将其扩展为简单的发送 - 确认模型,其中子项将在发送更多消息之前等待其消息被确认,因此您可以允许父级控制其接收消息的速率。
关于要运行的线程数,我同意你的看法,随着你扩展,父程序的复杂性将会增加。
我认为,主要因素是线程是否需要彼此共享任何数据或进行通信。如果不是这种情况,问题就会简化,因为每1个或更多个子节点可以使用1个线程,只需从队列中获取消息。
以上是关于用于分布式系统通信的1个线程与5个线程?的主要内容,如果未能解决你的问题,请参考以下文章