我想使用整数键将一些 std::shared_ptr 存储到映射中的 C++ 类实例,例如 std::map。但是,我需要这张地图有两个属性:
- 如果键不存在,则返回错误而不是创建新对象。
- 如果密钥确实存在,则以原子方式获取 std::shared_ptr 的副本。即,不可能在一个线程中从映射中删除对象,同时在另一个线程中从映射中检索它。
如果可能的话,我想避免使用单个互斥锁(甚至是多次读取,一次写入)来从映射中获取和删除对象,以避免开销。
这样的地图类是否存在于任何库中?如果没有,你能建议如何实施吗?