【发布时间】:2011-11-15 23:48:39
【问题描述】:
几天前,我的朋友告诉我他们在项目中遇到的情况。
有人决定,最好在并行线程(如异步)中销毁NotVerySafeClass 的对象。它是前一段时间实施的。
现在他们崩溃了,因为在主线程中调用了一些方法,而对象被销毁了。
创建了一些解决方法来处理这种情况。
当然,这只是一个不太好的解决方案的例子,但仍然是一个问题:
有什么方法可以防止NotVerySafeClass内部出现这种情况(如果destructor已经被调用,则拒绝运行destructor,并强制destructor等待,直到任何运行method结束(假设只有一个method))?
【问题讨论】:
-
为什么不在调用方法后销毁对象,而不是在另一个线程中?这是一个设计缺陷,需要在设计中修复,而不是通过补丁。
-
我们可以在析构函数启动后,在销毁尚未完成时启动该方法。问题是:我们可以防止这种情况发生吗?
标签: c++ multithreading methods destructor