我正在使用 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 推送到 Q3
Consumer1线程循环消费Q1、Q2、Q3。
希望清楚...
就性能而言,您认为哪个选项更好?
提前致谢..
最佳答案
在性能方面选项 2 更好。
原因是,您可以使用无锁循环队列,这样生产者就不会与消费者争用。由于所有生产者现在都在写入单独的队列。根本没有争论。 将此与选项 1 进行比较,其中所有生产者都必须竞争锁定 q1。
除了性能,事件处理的顺序是否重要?我想不是。如果是,那么您需要在选择解决方案时考虑这些因素
关于c++ - 哪个是更好的架构?多个 SPSC 队列还是一个 MPSC 队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49384430/