哪个架构更好?多个 SPSC 队列或一个 MPSC 队列



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

我的系统中主要有 2 个生产者线程,

生产者 1 和生产者 2,以及 1 个使用者线程消费者 1。

生产者 1 生成事件 A 和事件 B
生产者 2 产生事件 A

我看到有两个选项:
选项 1 - MPSC 队列
生产者 1 将事件 A 推送到第 1
季度生产者1将事件B推送到第一
季度生产者 2 将事件 A 推送到第 1
季度消费者 1 线程在循环中消耗 Q1。

选项 2 - 多个 SPSC 队列和单个使用者
生产者 1 将事件 A 推送到第 1
季度生产者 1 将事件 B 推送到第 2
季度生产者2将事件A推送到第三季度Consumer1 线程在循环中消耗 Q1、Q2、Q3。

希望清楚...

在性能方面,您认为哪个选项更好?

提前谢谢..

就性能而言,选项 2 更好。

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

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

最新更新