J'ai un modèle de poids mouche travaillant en série où l'usine utilise std::map
pour stocker et donner accès aux objets créés. L'usine renvoie un iterator
qui pointe vers l'objet dans la carte. Les objets de l'usine sont des constantes, ils ne seront donc pas mis à jour une fois insérés, à moins qu'ils ne soient effacés.Usine simultanée/poids mouche avec TBB
Je voudrais faire l'usine concurrente en utilisant tbb::concurrent_hash_map
, mais je ne suis pas sûr de ce que le retour devrait être. Je pourrais utiliser un iterator
(devrait-il être const_iterator
?), Mais la documentation indique que tous les itérateurs sont invalidés quand quelque chose fait un find
ou insert
dans le concurrent_hash_map
. Donc, je pourrais utiliser un const_accessor
puisque seul l'accès en lecture seule est nécessaire, mais cela est différent de l'implémentation en série (iterator
vs accessor
).
Lequel est le meilleur à utiliser? La cohérence des types (c.-à-d. Les deux itérateurs) devrait-elle être importante? Les options de compilation et de threads en série doivent être présentes.
Je pense que forcer la mise en œuvre en série et en parallèle dans un concept n'est jamais bon. – inf