计算并发读取流中的不同元素

时间:2017-01-18 20:53:01

标签: c++ multithreading data-structures stdmap stdset

我有多个侦听线程读取消息流(Kafka)。每条消息都有一个标识符。消费者/流保证至少一次消费。在大多数情况下,流只会提供一次消息。预期的消息计数是预先知道的。收到所有消息后,我想关闭所有侦听器线程。消息数量最多可达5000万。什么数据结构最适合这个?

我在考虑使用std::setstd::map并在每次插入线程时使用mutex。在这样的用例中,单个线程实际上可以更快吗?还有更优化的东西吗?

1 个答案:

答案 0 :(得分:3)

std::unordered_map会更好。但是你应该考虑使用像 HyperLogLog

这样的东西