J'ai plusieurs fils d'écoute qui lisent un flux de messages (Kafka). Chaque message a un identifiant. Les consommateurs/le flux garantissent au moins une consommation. La plupart du temps, le flux fournit le message exactement une fois. Le nombre de messages à attendre est connu à l'avance. Lorsque tous les messages sont reçus, je veux arrêter tous les threads des auditeurs. Le nombre de messages peut être au maximum de 50 millions. Quelle structure de données est la plus appropriée pour cela ?
Je pensais utiliser std::set
, std::map
et en utilisant un mutex
à chaque insertion du fil. Un seul thread peut-il être réellement plus rapide dans un tel cas d'utilisation ? Y a-t-il quelque chose de plus optimal ?