繁体   English   中英

C ++异常和pthread_cancel混淆

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM