gpt4 book ai didi

c++ - 哪个是更好的架构?多个 SPSC 队列还是一个 MPSC 队列?

转载 作者:太空宇宙 更新时间:2023-11-04 12:50:18 44 4
gpt4 key购买 nike

我正在使用 C++ 编写 HFT 应用程序,因此低延迟非常重要。我使用无锁队列实现。

我的系统中主要有2个生产者线程Producer1和Producer2,以及1个消费者线程Consumer1。

Producer1 产生 EventA 和 EventB
Producer2 生产 EventA

我看到有两个选项:
选项 1 - MPSC 队列
Producer1 将 EventA 推送到 Q1
Producer1将EventB推送到Q1
Producer2将EventA推送到Q1
Consumer1线程循环消费Q1。

选项 2 - 多个 SPSC 队列和单个消费者
Producer1 将 EventA 推送到 Q1
Producer1将EventB推送到Q2
Producer2 将 EventA 推送到 Q3Consumer1线程循环消费Q1、Q2、Q3。

希望清楚...

就性能而言,您认为哪个选项更好?

提前致谢..

最佳答案

在性能方面选项 2 更好。

原因是,您可以使用无锁循环队列,这样生产者就不会与消费者争用。由于所有生产者现在都在写入单独的队列。根本没有争论。将此与选项 1 进行比较,其中所有生产者都必须竞争锁定 q1。

除了性能,事件处理的顺序是否重要?我想不是。如果是,那么您需要在选择解决方案时考虑这些因素

关于c++ - 哪个是更好的架构?多个 SPSC 队列还是一个 MPSC 队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49384430/

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