【发布时间】:2015-03-07 00:10:05
【问题描述】:
我的代码有一个 pthread_cancel 取消一个线程,该线程有一个 try 块并捕获所有块 (catch (...))。
由于线程处于 try 块并且线程被取消时的时间问题,我的程序被中止,因为 pthread NTPL 引发的异常不会被 catch all 块捕获,因此线程无法取消。
我查看了几个解决方案,发现如果通过捕获异常重新抛出异常,则线程正常取消。
我的问题是——即使我们捕获并重新抛出,仍然没有最终处理异常,那么为什么程序没有中止?
【问题讨论】:
-
线程取消有点像拔掉电脑的插头。很难推断正在运行的程序的状态。
-
您可能想阅读以下内容:stackoverflow.com/questions/4760687/…
标签: c++ linux multithreading pthreads