2010-09-09 63 views
0

我有2個線程可以訪問這一個對象。
線程A:更新一個升壓hared_ptr構件 線程B:讀取升壓shared_ptr的構件自動讀取boost shared_ptr

由於一個shared_ptr不是整數/真實指針類型,它不能由原子螺紋B.

我讀想要避免鎖定。

如何保證線程B獲得有效的shared_ptr?

謝謝!

回答

0

即使是普通的類型,就不會有一個讀是原子在現實世界中這取決於你的架構做了擔保。

也考慮的情況下線程B攤位很長一段時間,而且還有一個指向舊的對象是一個可能從那時起刪除。在這種情況下,您可能需要考慮使用RCU來防止A刪除舊的指針。但這也意味着更多的代碼和更難以找到的錯誤

只需使用鎖。額外的開銷使您無需弄清楚爲什麼您的非同步不起作用。如果您確實想避免鎖定,請避免使用共享變量。

相關問題