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

问题描述 投票:0回答:1

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

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

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

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

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

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

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

我使用Linux和C ++。

linux multithreading network-programming zeromq distributed-system
1个回答
1
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.