use*_*475 7 c++ multithreading boost shared-ptr
我试图找到答案一段时间,但我失败了.
让我们假设我们有一个shared_ptr从一个线程创建.然后我们将它传递shared_ptr给另外2个线程(例如使用一些队列).所以从这一刻开始,有两份原件shared_ptr,指向同一个原始指针.两个所有者线程都shared_ptr将从队列中获取它们的副本.然后他们会将它传递给另一个线程或将其销毁.
问题是 - 它安全吗?原始指针是否会被正确销毁(没有竞争引用计数器?)

C++标准几乎不保证线程安全.引用计数std::shared_ptr是唯一的例外:它保证表现为原子访问的变量.我认为这是在§20.7.2.2/ 4中的这句话中编纂的:
更改
use_count()不反映可能引入数据争用的修改.
boost::shared_ptr 提供相同的保证:
shared_ptr对象提供与内置类型相同的线程安全级别.shared_ptr实例可以由多个线程同时"读取"....不同的shared_ptr实例可以被多个线程同时"写入"...(即使这些实例是副本,并在下面共享相同的引用计数.)
| 归档时间: |
|
| 查看次数: |
4402 次 |
| 最近记录: |