如http://en.cppreference.com/w/cpp/error/terminate中所述,调用终止的原因有很多。我可以想象其中一些原因几乎同时发生在两个线程中的情况。
Q1设置的终止函数std::set_terminate
是否可以同时调用两次或多次,同时我的意思是第二次调用在第一次结束之前开始。
Thread1 Thread2
| |
_ |
t |
e |
r |
m |
i _
n t
a e
t r
e m
- ?
Q2如果 Q1==YES,那么如果第一次终止结束会发生什么。我猜如果它以 std::abort 结束,那么程序结束,但是如果用户提供的 terminate 没有中止程序会发生什么?
Q3调用的终止函数是std::set_terminate
在导致终止调用的线程的上下文中设置的吗?