相关疑难解决方法(0)

是否存在std :: shared_ptr的非原子等价物?为什么<memory>中没有一个?

这是一个两部分问题,所有关于原子性std::shared_ptr:

1. 据我所知,std::shared_ptr是唯一的智能指针<memory>这就是原子.我想知道是否有非原子版本std::shared_ptr可用(我看不到任何内容<memory>,所以我也接受标准之外的建议,比如Boost中的建议).我知道boost::shared_ptr也是原子的(如果BOOST_SP_DISABLE_THREADS没有定义),但也许有另一种选择?我正在寻找具有相同语义std::shared_ptr但没有原子性的东西.

2.我明白为什么std::shared_ptr是原子的; 这有点好.然而,对于每种情况来说都不是很好,而且C++历来有"只为你使用的东西买单"的口号.如果我没有使用多个线程,或者我使用多个线程但是没有跨线程共享指针所有权,则原子智能指针是过度的.我的第二个问题是为什么不是std::shared_ptrC++ 11 中提供的非原子版本?(假设有一个原因)(如果答案是简单的"非原子版本根本不会考虑"或"从来没有人问非原子版"这很好!).

对于问题#2,我想知道是否有人提出过非原子版shared_ptr(无论是对Boost还是标准委员会)(不是替换原子版本shared_ptr,而是与它共存)并且它被击落了具体原因.

c++ smart-pointers c++11

82
推荐指数
5
解决办法
7576
查看次数

shared_ptr的缺点

使用c ++ 11中包含的shared_ptr,可以实现半垃圾收集环境.(通货膨胀?)用法是否带来一些缺点?

我可以想象一个类模型,在这里你可以创建一个类,在这个类中你最后输入你的类作为shared_ptr来缩写语法.

/////////////////
//// MyClass ////
/////////////////

#include <memory>

class MyClass {
public:
    Myclass();
};

typedef std::shared_ptr<MyClass> SharedMyClass;

///////////////////////
//// Example Class ////
///////////////////////

class Example {
public:
    Example(): myClassObject(new MyClass()) {}
private:
    SharedMyClass myClassObject;
};
Run Code Online (Sandbox Code Playgroud)

c++ smart-pointers shared-ptr c++11

8
推荐指数
1
解决办法
3202
查看次数

标签 统计

c++ ×2

c++11 ×2

smart-pointers ×2

shared-ptr ×1