13得票2回答
苹果的Objective-C运行时如何实现多线程引用计数而不降低性能?

我正在阅读这篇文章,它讲述了有关从Python解释器中删除全局解释器锁(GIL)以提高多线程性能的尝试,并发现了一些有趣的事情。 结果表明,从内存管理方面来看,删除GIL实际上使事情变得更糟: 在自由线程中,参考计数操作失去了其线程安全性。因此,该补丁引入了一个全局参考计数互斥锁以及...

12得票5回答
用于引用计数指针的STL类?

这应该很简单,但我似乎找不到它(除非没有这样的类!) 有哪些STL类可以用作智能指针? 更新 谢谢回复, 我必须说我很惊讶竟然没有标准实现。 我最终使用了这个:http://archive.gamedev.net/reference/articles/article1060.asp

12得票9回答
C++中实现智能指针的最佳方法是什么?

我一直在评估各种智能指针实现(哇,有很多),我觉得它们大多数可以归类为两大类: 1)这个类别在被引用的对象上使用继承,使它们具有引用计数并通常实现了 up() 和 down()(或它们的等价物)。也就是说,要使用智能指针,你指向的对象必须继承某个提供 ref 实现的类。 2)这个类别使用一...

12得票6回答
C++/CX能检测和解决对象循环吗?

据我的理解,C++/CX并不使用垃圾回收,而是使用引用计数方法。 引用计数的问题是它无法处理循环引用。循环引用通常使用弱引用来解决,例如在标准C++中使用的weak_ptr。 但我在C++/CX中找不到明确指定弱引用的方法。由此我认为这是由C++/CX本身处理的。我想知道C++/CX将如何...

11得票4回答
为什么shared_ptr需要对weak_ptr进行引用计数?

引用自C++ Primer $12.1.6: weak_ptr(表12.5)是一个智能指针,它不控制指向的对象的生命周期。相反,weak_ptr指向由shared_ptr管理的对象。将weak_ptr绑定到shared_ptr 不会改变该shared_ptr的引用计数。一旦指向该对象的最后...

11得票3回答
有没有一种方法可以区分相同值的不同 `Rc`?

这里有一个例子:use std::rc::Rc; #[derive(PartialEq, Eq)] struct MyId; pub fn main() { let rc_a_0 = Rc::new(MyId); let rc_a_1 = rc_a_0.clone(); ...

11得票1回答
在Swift中,程序员是否负责打破对象之间的循环引用?

据我所知,Swift使用自动引用计数进行垃圾回收。 这让我回忆起很多年前我做COM开发的时候。 VB6(以及之前版本)在对象超出范围时自动减少引用计数的过程。大多数情况下,这足以让程序员忘记内存管理。 但是,如果对象之间存在循环引用,例如Car->WheelsCollection ...

11得票2回答
cv::Mat是线程安全的吗(原子赋值+引用计数)?

我正在尝试跨线程共享一张只读的图片。通常情况下,我会使用boost::shared_ptrs来完成这件事,但由于cv::Mat已经是一个引用计数容器,因此我一直在尝试以相同的方式使用它,假设它是基于引用计数的,因为有关线程安全性在引用计数中的说明: http://opencv.willow...

10得票2回答
在AVL树中处理重复键

我想让我的avl树支持重复的键,但是默认的二叉搜索树在处理重复键时存在问题,因为旋转操作可能会导致具有相同键的节点位于其父节点的左右两侧。 例如,当添加三个具有键A的节点时,树会执行旋转操作,使其变成以下结构: A / \ A A 因此,获取该键的所有条目将是一个问题.....

10得票1回答
将shared_ptr分配给数组的偏移量

假设我有一个指向数组的 shared_ptr: std::shared_ptr<int> sp(new T[10], [](T *p) { delete[] p; }); 还有一种方法: shared_ptr<T> ptr_at_offset(int offse...