【发布时间】:2012-07-14 13:30:49
【问题描述】:
我试图找到答案一段时间但我失败了。
假设我们有一个从一个线程创建的shared_ptr。然后我们将这个 shared_ptr 传递给另外 2 个线程(例如使用一些队列)。所以从这一刻起,原始shared_ptr 有2 个副本,指向同一个原始指针。
两个所有者线程都将从队列中获取此shared_ptr 的副本。然后他们会将其传递给另一个线程或将其销毁。
问题是 - 它安全吗?原始指针是否会正确销毁(不会有引用计数器的竞争?)
【问题讨论】:
-
您的表述有点模糊:“销毁”是指调用
reset、分配新的指针还是让shared_ptr超出范围?如果是这样,这些操作就很好。其他破坏性操作可能不是。 -
我不打算调用任何 reset()。 shared_ptr 超出范围。
标签: c++ multithreading boost shared-ptr