C++ 具有并发值的哈希映射(在C+;+;)

C++ 具有并发值的哈希映射(在C+;+;),c++,concurrency,thread-safety,concurrenthashmap,C++,Concurrency,Thread Safety,Concurrenthashmap,我有一个哈希映射,从字符串键到指向线程安全类的指针。这个类的每个对象都包含一个互斥体,我使用它在不同的方法之间进行同步 此外,每隔一段时间,我想丢弃一些在一段时间内未使用的值。我希望能够安全地删除值指针并将其从哈希映射中删除,同时确保没有人使用我的值 实现这一点的最佳方法是什么(一般来说,在C++中)?如果您希望人们使用您的哈希映射来获取这些指针,那么就可以继续使用它们,而不必通知您的哈希映射类他们已经完成了操作,然后,将共享指针存储在哈希映射中是将实际对象删除时间定为对象的最后一个用户完成删除

我有一个哈希映射,从字符串键到指向线程安全类的指针。这个类的每个对象都包含一个互斥体,我使用它在不同的方法之间进行同步

此外,每隔一段时间,我想丢弃一些在一段时间内未使用的值。我希望能够安全地删除值指针并将其从哈希映射中删除,同时确保没有人使用我的值


实现这一点的最佳方法是什么(一般来说,在C++中)?

如果您希望人们使用您的哈希映射来获取这些指针,那么就可以继续使用它们,而不必通知您的哈希映射类他们已经完成了操作,然后,将共享指针存储在哈希映射中是将实际对象删除时间定为对象的最后一个用户完成删除时间的最简单方法。然后,哈希映射可以随时删除指向对象的共享指针。

存储共享指针(
std::shared\u ptr
)并将其传递给对象。使用
std::shared\u ptr::Use\u count
方法检查当前正在使用的指针数量

您也可以从中使用。它使用访问器(一种带锁的智能指针)保护并发访问及其元素的生存期。

如果客户端希望知道对象何时消失并避免延长其生存期,则
弱\u ptr
将有所帮助。