簡體   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