why is std::shared_ptr using atomic cpu operations

删除回忆录丶 提交于 2019-12-04 18:11:01

问题


I have a problem understanding why shared_ptr is using atomic cpu instructions... I cant figure out the reasons because it is NOT thread safe. Can somebody please explain.

If you wonder know how I know that it uses atomic intstuructions: there was a clip from C++ and beyond where Herb and Andrei talk about it, but they never mention the reasons why is it like that.


回答1:


Any instance of shared_ptr is multi-thread safe. The data it points to is not multi-thread safe. See this.

The atomic instructions, if properly applied (protection done in the same order by competing thread access) is one way to implement thread safety. Another way is by use of mutexes.

See a similar question for BOOST: Is boost shared_ptr xxx thread safe?




回答2:


Herb Sutter just used shared_ptr as a nice example in his gotw 95, he goes there to elaborate on design decision:
https://herbsutter.com/2014/01/13/gotw-95-solution-thread-safety-and-synchronization/



来源:https://stackoverflow.com/questions/8980328/why-is-stdshared-ptr-using-atomic-cpu-operations

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!