我想達到的目的:有多個被加鎖的執行緒正在運行,如果其中有執行緒發生了例外,就讓程式退出,其他執行緒不再運行回顯結果。
但我發現如果程式直接退出,鎖就沒法釋放,終端就會卡死,我寫了一個示例如下:

如果先釋放再退出程式,這時候程式可以被正常退出,但是其他執行緒的內容也會被顯示

谷歌了一天也沒找到辦法,我要怎么修改才能達到:某一個執行緒發生例外直接退出,而其他執行緒不被執行呢?希望各位大佬走過路過能給小弟一個提示解答,蟹蟹
uj5u.com熱心網友回復:
我理解是 test1 執行的時候, test2 也執行了, 輸出是按佇列來的。可以試試如果 test2 足夠長,看是否會被中斷。
把 test2 的動作改成
for i in range(100):
print('test do',i)
sleep(1)
看看是否被中斷。
uj5u.com熱心網友回復:
我這里寫的是示例代碼,如果把test2執行時間變長的話那也是治標不治本呀uj5u.com熱心網友回復:
執行緒的概念就是并行呀。比如執行緒1 要花5秒
執行緒2 要花10秒, 第 3秒 和 第 8秒 有輸出
執行緒1,2 同時啟動
執行緒1 到第 4秒時例外了 , 你無法確保不輸出 執行緒2 第3秒時的輸出。
1、先確認是否正常中斷 test2
2、如果你只想象控制 輸出, 可以考慮采用訊息機制, 輸出前,先判斷是否主執行緒已經傳遞中斷信號。
uj5u.com熱心網友回復:
我去學習了解一下資訊機制,謝謝大佬
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/129646.html
下一篇:爬蟲問題#Python
