我有多个侦听线程读取消息流(Kafka)。每条消息都有一个标识符。消费者/流保证至少一次消费。在大多数情况下,流只会提供一次消息。预期的消息计数是预先知道的。收到所有消息后,我想关闭所有侦听器线程。消息数量最多可达5000万。什么数据结构最适合这个?
我在考虑使用std::set
,std::map
并在每次插入线程时使用mutex
。在这样的用例中,单个线程实际上可以更快吗?还有更优化的东西吗?
答案 0 :(得分:3)
std::unordered_map
会更好。但是你应该考虑使用像 HyperLogLog