当我在一析构,它是可能其他一些线将开始执行对象的成员?如何处理这种情况?

有帮助吗?

解决方案

C++已经没有内在的保护反对使用对象之后已经删除了关于种族的条件-另外一个线程可以使用你的对象之后已经完全被删除。

无论是:

  1. 确保只有一个地方的 代码拥有的对象,它的 负责删除时没有一个人 使用的对象。
  2. 让 目基准计-通过加入 明确的参考数代码,或 找到一个适当的基类 实现基准计数

其他提示

理想情况下没有别的有对它的引用 -

除非你确信没有其他将试图使用它,你不应该被销毁的对象。你需要,当你调用删除在更密切地关注。

在情况下,你在因为堆栈异常处理函数中展开的析构函数,我建议重新安排你的代码以这样的方式,一个串行块中你捕获异常。

在检查对象仍然是有效的,并调用你的方法后挡。这样,在一个线程中的异常,将允许其他线程处理呼叫优雅地析构函数。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top