【发布时间】:2016-05-05 20:26:26
【问题描述】:
是否存在注册回调的标准(任何 C++ 标准)方法,该方法在任何具有自动存储持续时间的对象作为正常程序终止的一部分被销毁之前不久被调用?
编辑:
为了更清楚地说明这一点。这是一个多线程应用程序。某些对象可能已将仿函数推入线程池,该线程池引用它们(仿函数访问“发起者”对象)。线程池对象是静态的,所以它会在main() 返回之后被销毁,因此在所有这些将仿函数推入线程池并引用它们的对象已经被销毁之后。线程池在终止时被刷新,因此函子中有对“发起者”对象的悬空引用。
【问题讨论】:
-
析构函数呢?
-
是的,但是每个类都有自己的,都必须安装一个钩子机制。更不用说非类类型的对象了。
-
您想要在程序终止前进行一次回调,还是在每次对象被销毁时进行一次回调?
-
一个回调,就在 main() 返回之前,但我不必摆弄 main()。比如,把 SCOPE_EXIT(&, exit_callback());进入 main()。
-
在main的底部添加一个函数?
标签: c++