我的应用程序问题如下 -Boost shared_ptr use_count函数
我有一个大的结构foo。由于这些数据量很大,并且出于内存管理的原因,我们不希望在数据处理完成时将其删除。
我们将它们存储在std::vector<boost::shared_ptr<foo>>.
我的问题是有关知道什么时候所有的处理完成。第一个决定是我们不希望任何其他应用程序代码在结构中标记完整的标志,因为程序中有多个执行路径,我们无法预测哪一个是最后一个。
所以在我们的实现中,一旦处理完毕,我们删除的boost::shared_ptr<foo>>
所有副本除了一个向量中。这会将shared_ptr中的引用计数器放到1.是否可以使用shared_ptr.use_count()来查看它是否等于1,以知道应用程序的所有其他部分何时完成数据。
一个额外的原因,我问的问题是,在共享指针shared_ptr升压文档建议不使用“use_count”为产品代码。
编辑 - 我没有说的是,当我们需要一个新的富,我们将扫描foo的指针寻找一个foo的载体,其是当前未使用和使用FOO下一轮的处理。这就是为什么我认为使用1的引用计数器是确保这个特定foo对象不再被使用的安全方法。
你的代码是多线程的吗?如果是的话,这将改变答案。 – wheaties 2010-05-28 14:01:01
是的,有3到6个线程处理数据 – 2010-05-28 14:09:28