У меня есть несколько потоков прослушивателей, читающих поток сообщений (Kafka). Каждое сообщение имеет идентификатор. Потребители/поток гарантируют по крайней мере один раз потребление. В большинстве случаев поток обеспечивал сообщение ровно один раз. Количество ожидаемых сообщений известно заранее. Когда все сообщения получены, я хочу отключить все потоки прослушивателя. Количество сообщений может составлять не более 50 миллионов. Какая структура данных наиболее подходит для этого?Подсчитайте отдельные элементы из потока с одновременным чтением
Я думал об использовании std::set
, std::map
и используя mutex
при каждой вставке нити. Может ли один поток быть быстрее в таком случае? Есть ли что-то более оптимальное?
Кольцо буфера, ИМО. –