有谁知道实施shared_ptr
and weak_ptr
与惰性初始化伙伴一起?课程的要求是:
我不久前创建了一些没有完全完成工作的类(请参阅此处的 CVu 文章 http://accu.org/var/uploads/journals/CVu222.pdf)所使用的shared_ptr
and weak_ptr
在他们的实施中。使用共享指针和弱指针而不是与它们集成的模型的主要问题如下:
一旦全部lazy_ptr
对象超出范围,任何弱引用都不能再被锁定,即使其他客户端正在持有shared_ptr
版本
无法控制不同线程上对象的构造
如果有人指出解决这些问题的其他尝试,或者该领域可能正在进行的任何工作,我将不胜感激。
要创建不需要参数的延迟构造:
boost::bind( boost::factory<T*>(), param1, param2 )
将创建一个函数对象,执行相当于new T(param1, param2)
无需构建时的参数。
要创建支持此延迟构造的shared_ptr:
将您的工厂与标准捆绑在一起boost::shared_ptr
(例如,在您创建的类中),您将得到您所描述的结果,包括适当的weak_ptr
功能...
无论什么代码都会触发延期建设由客户端应该运行:
your_shared_ptr.reset( your_factory() );
无论什么代码触发对象破坏应该运行:
your_shared_ptr.reset();
共享指针的计算结果为true
仅在对象的生命周期内。如果您希望区分“尚未构建”和“已销毁”,您可以在工厂运行后设置一个布尔值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)