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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用于分布式系统通信的1个线程与5个线程?相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

对于多线程,如果扩展此系统架构,我会关注上下文切换和性能命中。认为50个父母一共有5个线程,所以最少250个线程。

线程被写入ZeroMQ standards,没有锁,关键部分,共享内存等。

我使用Linux和C ++。

答案

您可以在父级上运行消息队列,这也应该允许子级在按照到达的顺序处理事件时不会被子级淹没。此外,您可以将其扩展为简单的发送 - 确认模型,其中子项将在发送更多消息之前等待其消息被确认,因此您可以允许父级控制其接收消息的速率。

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

我认为,主要因素是线程是否需要彼此共享任何数据或进行通信。如果不是这种情况,问题就会简化,因为每1个或更多个子节点可以使用1个线程,只需从队列中获取消息。

以上是关于用于分布式系统通信的1个线程与5个线程?的主要内容,如果未能解决你的问题,请参考以下文章

分布式系统的进程组织

分布式系统的进程组织

3分钟简述熔断器使用方法

并发编程

分布式系统中节点上的进程线程纤程概念及其之间关系你懂吗?

4.并发编程模型