我正在考虑使用 boost::weak_ptr 来实现一个对象池,这样当没有人使用其中一个对象时它们就会被收割。不过,我担心的是它是一个多线程环境,并且似乎在最后一个 shared_ptr 到超出范围的对象与从weak_ptr 构造的新 shared_ptr 之间存在竞争条件。通常,您会使用锁定或其他东西来保护此类操作;但是,这里的重点是您不知道 shared_ptr 何时可能超出范围。
我对 boost::shared_ptr 和 boost::weak_ptr 有误解吗?如果没有,是否有人对该怎么做有什么好的建议?
谢谢。
安德鲁