了解共享指针上的强引用计数是如何增加的?
Understanding how the strong reference count on shared pointers is increased?
我想了解 C++11 如何处理共享指针控制块上的强引用计数。我很乐意在调用析构函数时将它减一。
我的问题是在 运行 时间内增加动态分配的控制块上的强引用计数。在多个 运行 时间上下文的情况下,这对我来说看起来更加复杂。
程序如何从不同的上下文中找到相同的强引用计数?
编辑:我的问题不在于 shared_ptr 的实施。这是关于在多 process/thread/context 环境中使用它。
How a program can find the same strong reference count from a different context?
不能。不是来自不同的上下文,甚至也不是来自 相同的 上下文。你看,仅仅有原始对象的地址来找到那个引用计数是不够的——你实际上必须有引用计数本身的地址。也就是说,你需要std::shared_ptr
对象的值!
因此,要在引用 T
对象时有多个上下文/对象/任何 "participate",您需要将相同 shared_ptr<T>
实例的副本传递给它们。他们不会自己找到它,也无法生成它。
我想了解 C++11 如何处理共享指针控制块上的强引用计数。我很乐意在调用析构函数时将它减一。
我的问题是在 运行 时间内增加动态分配的控制块上的强引用计数。在多个 运行 时间上下文的情况下,这对我来说看起来更加复杂。
程序如何从不同的上下文中找到相同的强引用计数?
编辑:我的问题不在于 shared_ptr 的实施。这是关于在多 process/thread/context 环境中使用它。
How a program can find the same strong reference count from a different context?
不能。不是来自不同的上下文,甚至也不是来自 相同的 上下文。你看,仅仅有原始对象的地址来找到那个引用计数是不够的——你实际上必须有引用计数本身的地址。也就是说,你需要std::shared_ptr
对象的值!
因此,要在引用 T
对象时有多个上下文/对象/任何 "participate",您需要将相同 shared_ptr<T>
实例的副本传递给它们。他们不会自己找到它,也无法生成它。