问题标签 [boost-smart-ptr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 是提升 shared_ptr线程安全吗?
我有一个关于boost::shared_ptr<T>
.
有很多线程。
第一季度
如果Thread_A不关心nowResource
是最新的,这部分代码会有问题吗?
我的意思是当Thread_B不SetResource()
完全时,Thread_A得到一个错误的智能点GetResource()
?
第二季度
线程安全是什么意思?
如果我不关心资源是否是最新shared_ptr<CResource> nowResource
的,释放时程序会崩溃nowResource
还是问题会破坏shared_ptr<CResource>
?
c++ - intrusive_ptr:为什么不提供通用基类?
boost::intrusive_ptr
需要intrusive_ptr_add_ref
和intrusive_ptr_release
被定义。为什么不提供可以做到这一点的基类?这里有一个例子:http: //lists.boost.org/Archives/boost/2004/06/66957.php,但海报说“我不一定认为这是个好主意”。为什么不?
更新:我认为这个类可能与多重继承一起被滥用这一事实是不够的。任何从具有自己的引用计数的多个基类派生的类都会有同样的问题。这些引用计数是否通过基类实现没有区别。
我认为多线程没有任何问题。boost::shared_ptr
提供原子引用计数,这个类也可以。
c++ - 使用带有“this”的智能指针
我正在学习使用 boost 智能指针,但我对一些情况有点困惑。假设我正在实现一个状态机,其中每个状态都由一个更新方法实现。每个状态都可以返回自己或创建一个新的状态对象:
};
状态机循环如下所示:
你能把这段代码翻译成使用 boost 智能指针吗?当谈到“返回这个”部分时,我有点困惑,因为我不知道该怎么做。基本上我认为返回“return boost::shared_ptr(this);”之类的东西是没有用的 因为它不安全。我应该怎么办?
boost-smart-ptr - 以原子方式读取 boost shared_ptr
我有 2 个线程访问这个对象。
线程 A:更新 boost hared_ptr 成员 线程 B:读取 boost shared_ptr 成员
由于 shared_ptr 不是整数/实指针类型,线程 B 不能原子地读取它。
我想避免锁。
如何保证线程 B 获得有效的 shared_ptr?
谢谢!
c++ - 如何将 boost::weak_ptr 转换为 boost::shared_ptr
我有一个 shared_ptr 和一个 weak_ptr
如何将weak_ptr 转换为shared_ptr
c++ - 将 boost::shared_ptr 转换为实际类
有人会怎么做?例如:
其中 it->second 是 boost::shared_ptr 到客户端错误:
c++ - boost::shared_ptr 和动态转换
我在使用shared_ptr
基类时遇到问题,在取消引用它时似乎无法调用派生类的方法。我相信代码会比我更冗长:
c++ - boost中有一个通用的“清理”类吗?
我只是想要一个这样做的类:
目的是我有这个“清理”来在 func 被删除时调用它。cleanup 将作为 shared_ptr 传递。
我也考虑过在 boost::shared_ptr 中使用自定义删除器。也许我可以使用 boost::shared_ptr 并使用 NULL 创建并让 func() 获取它忽略的参数。
这一切的目的是抽象出一个步骤,我希望类的析构函数在最后一个引用超出范围时执行(实际上从包含它的容器中删除自己,而类不必知道它的容器)。
如果我用 shared_ptr 来做,我可能会绕过其中之一:
这里 func 必须带一个参数。我不能 100% 确定如果指针为 NULL,删除器总是会被调用,所以也许我需要使用不同的指针,这使得它开始变得“凌乱”。
有没有标准的方法来处理这个问题,如果没有,最好的方法是什么?
java - 在 Eclipse 中调试 SWIG 包装的 C++ 代码的提示?
我有大量的 C++ 代码,我用 SWIG 包装了这些代码,并从 Java 中调用它。C++ 代码大量使用了 boost 智能指针。
我的一些 JUnit 测试完成了,但是在清理过程中遇到了段错误。堆栈跟踪表明对象的最终确定中存在内存错误,但它发生在 SWIG 生成的 JNI 代码中,并且似乎与智能指针引用计数相关联。
我希望能够单步执行代码的所有层。这可能吗?我也很高兴听到其他人在此类问题上的经历。
c++ - 到期后 boost::weak_ptr 的排序顺序?
Forboost::weak_ptr
被operator<
定义,以便它可以在关联容器中使用。
我的问题是:weak_ptr
即使其中一些对象的引用计数变为零,几个对象的排序顺序是否稳定?这不会与容器类似std::set
吗?
例子:
- 如果断言#1 为真,断言#2 是否总是成立?
wptrA2
Scope 1 前后是否处于相同状态?