У меня есть последовательный шаблон, работающий в серийном режиме, где фабрика использует std::map
для хранения и предоставления доступа к созданным объектам. Фабрика возвращает iterator
, который указывает на объект на карте. Объекты на фабрике являются константами, поэтому они не будут обновляться после вставки, пока они не будут удалены.
Я бы хотел сделать фабрику параллельной, используя tbb::concurrent_hash_map
, но я не уверен, какой должна быть отдача. Я мог бы использовать iterator
(должно быть const_iterator
?), Но в документации говорится, что все итераторы становятся недействительными, когда что-то делает find
или insert
в concurrent_hash_map
. Поэтому я мог бы использовать const_accessor
, так как необходим только доступ только для чтения, но тогда это отличается от последовательной реализации (iterator
против accessor
).
Какой из них лучше использовать? Должна ли важна согласованность типов (т. Е. Обоих итераторов)? Должны присутствовать как последовательные, так и потоковые параметры времени компиляции.