我有一個哈希映射,從一個字符串鍵到一個線程安全類的指針。這個類的每個對象都包含一個互斥量,我用它在各種方法之間進行同步。帶併發值的哈希映射(C++中)
此外,每一個在我想要放棄未使用一段時間值一次。我希望能夠安全地刪除值指針並將其從哈希映射中移除,同時確保沒有人使用我的值。
什麼是實現這一目標的最佳途徑(通常,在C++)?
我有一個哈希映射,從一個字符串鍵到一個線程安全類的指針。這個類的每個對象都包含一個互斥量,我用它在各種方法之間進行同步。帶併發值的哈希映射(C++中)
此外,每一個在我想要放棄未使用一段時間值一次。我希望能夠安全地刪除值指針並將其從哈希映射中移除,同時確保沒有人使用我的值。
什麼是實現這一目標的最佳途徑(通常,在C++)?
如果你希望人們使用您的哈希表來獲得這些指針則可以使用它們來保持,而無需通知,他們已經完成了它的哈希表類,那麼存儲共享指針在散列圖是最簡單的方法是將實際的對象刪除時間定爲對象的最後一個用戶完成時間。散列映射隨時可以隨時清除它的共享指針。
商店,並通過各地共享指針(std::shared_ptr
)到你的對象。使用std::shared_ptr::use_count
方法來檢查有多少指針此刻
正在使用您還可以使用concurrent_hash_map從TBB library。它保護並行訪問和使用訪問其元件的使用壽命(一種具有鎖的智能指針)
如果客戶想知道當物體不見了,避免延長它的壽命,'weak_ptr'會有所幫助。 – Yakk 2013-04-25 12:24:59