這個問題是一個可能的子問題,這concurrent access and free of a data structure併發訪問,並免費堆對象
另一個問題是開放式的設計,這是一個更具體。
struct ds
{
int x,y,z;
pthread_mutex_t mutex;
};
我需要一個確定性的解決方案,通過它可以同時訪問1個ds類型的對象並釋放它。
約束:
- 您可以互斥的指針,但不能把它拿出來的對象。
真正的問題:
免費不能做持有鎖,因爲,再由鎖佔用的內存也丟失。
我已經閱讀了很多關於參考計數的論文和文章,但是他們中的每一個都在ds之外保持鎖定。我想要一個解決方案,我可以在ds內部鎖定或引用鎖。
我想問題歸結爲確保在免費時沒有對象的外部引用。所以如果外部引用是一個指針,我們需要在ds之外另一個鎖來確保對象沒有消失。這就是爲什麼他們發明了boost的shared_ptr。 – Saurabh 2012-02-03 13:13:02