gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 10:06:29 26 4
gpt4 key购买 nike

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

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

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

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

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

对于多线程,如果扩展此系统架构,我会担心上下文切换和性能下降。想想 50 个 parent ,每个 5 个线程,所以最少 250 个线程。

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

我使用 Linux 和 C++。

最佳答案

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

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

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

关于linux - 1 个线程与 5 个线程用于分布式系统通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52225430/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com