【发布时间】:2014-08-28 19:27:47
【问题描述】:
我在客户端(生产者)有 8 个线程,在服务器端(消费者)有 1 个线程
消费者线程正在旋转检查是否有新数据到达。我有两个选择来实现这个:
使用一个concurrent queue,所有 8 个生产者都发布到同一个队列,服务器旋转和
try_pop它使用 8 个无锁 single producer single consumer queue。每个生产者发布到自己的队列,但消费者应该检查 8 个查询而不是一个。
我认为检查 8 个无锁查询必须比检查一个阻塞队列快得多(因为阻塞是昂贵的!)。所以我倾向于使用8 spsc_queue。如果我是对的,您有什么建议?
【问题讨论】:
-
不知道。当您测试每个选项时,哪个更快?
-
不旋转可以加快速度。
-
您需要进行多少次测试才能确保法拉利比驴快?
-
@javapowered "ferrari is faster than a donkey" 环境很重要!
标签: c++ concurrency