Я хочу сохранить некоторые экземпляры класса std::shared_ptr в С++ на карте, например. std::map, используя целочисленный ключ. Однако мне нужно, чтобы эта карта имела два свойства:
- Если ключ не существует, верните ошибку, а не создавайте новый объект.
- Если ключ существует, атомарно возьмите копию std::shared_ptr. т.е. не должно быть возможности удалить объект с карты в одном потоке, одновременно извлекая его с карты в другом.
Я хотел бы избежать одного мьютекса (даже многократного чтения, одной записи) для получения и удаления объектов с карты, если это возможно, чтобы избежать накладных расходов.
Существует ли такой класс карты в какой-либо библиотеке? Если нет, можете подсказать, как реализовать?