【发布时间】:2017-11-01 13:08:50
【问题描述】:
在哪个线程中调用终止处理程序:
当
noexcept函数内部抛出异常时?当用户调用
std::terminate()时?thread的启动或销毁?
它是否在标准中定义,我可以访问thread_local 对象吗?
【问题讨论】:
-
我的常识告诉我它会在名为
std::terminate的线程上调用?我确实相信标准没有明确解决这个问题。 -
我认为这是未指定的行为(或者可能未定义?)
-
我无法想象有某种机制可以中断任何其他线程可能正在执行的操作以使其运行
std::terminate。我认为调用std::terminate的线程可以运行它。 -
让代码在特定的其他线程上运行是非常不平凡的。所以它只是没有,它运行在任何遭受心脏病发作的线程上。易于自己尝试,让您感觉更好。
-
我刚查了在线编译器,终止的线程是调用std::terminate的线程。
标签: c++ terminate terminate-handler