Столкнулся с проблемой кэширования своего мультипоточного приложения. Сначало реализовал в лоб через unordered_map, но потом столкнулся с проблемой когда приложение крашило в момент когда одновременно два потока пытались добавить/прочитать ключ. Крашило с Assertion '__first != __last' failed.
Долго искал реализацией thread safe кэша, но решения не нашёл. Кто сталкивался с подобной проблемой?
Вам нужна lock-free хеш таблица (гуглите Lock free unordered_map). В стандартной библиотеке таких структур нет. Или просто используйте свои мьютексы при каждом обращении к структуре.