[英]c++ exceptions and pthread_cancel confusion
我的代码有一个pthread_cancel取消了一个带有try块并捕获所有块的线程(catch(...))。
由于线程在try块中且线程被取消时的计时问题,我的程序被中止,因为pthread NTPL引发的异常不会被catch all块捕获,因此线程无法取消。
我查看了一些解决方案,然后发现,如果通过捕获异常将其重新抛出,则该线程将正常取消。
我的问题是-即使我们捕获并抛出,最终还是没有处理异常,那为什么程序不中止呢?
如果要使用pthread_cancel
取消线程,则该线程必须适当地管理其取消状态,仅在安全的情况下才启用异步取消,并在某些情况下检查是否定期取消它。
如果pthread_cancel
不能完全满足您的需求,请不要使用它。 相反,应实现自己的取消机制,该机制恰好具有所需的语义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.