先交代下背景,寫《c#多執行緒之旅》這個系列文章主要是因為以下幾個原因:1.多執行緒在c/s和b/s架構中用得是非常多的;2.而且多執行緒的使用是非常複雜的,如果沒有用好,容易造成很多問題。c#多執行緒之旅目錄:
c#多執行緒之旅(1)——介紹和基本概念
c#多執行緒之旅(2)——建立和開始執行緒
c#多執行緒之旅(3)——執行緒池
c#多執行緒之旅(4)——apm初探
c#多執行緒之旅(5)——同步機制介紹
c#多執行緒之旅(6)——詳解多執行緒中的鎖
c#多執行緒之旅(7)——終止執行緒
當我們想要立即終止乙個執行緒時,可以用呼叫thread.abort方法來終止執行緒。這個和協作式取消不一樣。
例子:名稱
**計算限制的
操作
public class threadwork主程式}catch (threadabortexception e)
finally
tool.writemessage("thread - still alive and working.", consolecolor.green, consolecolor.white);
thread.sleep(1000);
tool.writemessage("thread - finished working.", consolecolor.green, consolecolor.white);}}
public class threadaborttest工具類catch(exception ex)
console.readkey();}}
public static class tool(1)呼叫thread.abort()的輸出結果:}
(2)未呼叫thread.abort()輸出結果:
(3)流程:
(1)當主線程呼叫mythread.abort()後,執行緒mythread丟擲異常,執行緒mythread捕獲到異常
(2)在mythread catch塊中
如果呼叫thread.resetabort()-----
step1.取消終止執行緒的請求,並恢復執行緒,繼續執行resetabort後面的語句,然後執行catch塊之後的語句
step2.若catch塊之後有finally塊,則執行執行finally塊,然後執行finally塊後面的語句。
如果沒有呼叫thread.resetabort()----
當呼叫執行緒的abort方法時,不能保證執行緒立即終止,有可能永遠不能終止。這種情形發生在catch或finally塊中存在長時間或無限的耗時操作時。
只有當catch或finally塊中**執行完才能終止執行緒。所以我們可以呼叫執行緒的join方法來等待執行緒的完成或終止。
應用程式將會被終止,finally塊不會被執行
應用程式將會被終止
執行緒會在start被呼叫時終止執行緒。
執行緒被中斷,然後終止執行緒
執行緒被中斷,然後終止執行緒
throw threadstartexception 引發abort的呼叫,然後abortrequested 被加到正在被終止的執行緒的threadstate屬性
threadabortexception不會被丟擲直到執行緒返回託管**。
作 者:jackson0714
出 處:
一下。您的鼓勵是作者堅持原創和持續寫作的最大動力!
Linux多執行緒之執行緒終止
呼叫 return void var 呼叫void pthread exit void value ptr 其它執行緒可以呼叫 pthread join 獲得這個針。注 如果 thread 執行緒通過 return 返回,value ptr 所指向的單元裡存放的是 thread 執行緒函式的返回值。...
C 多執行緒之旅 3
閱讀目錄 一 介紹 二 通過tpl進入執行緒池 三 不用tpl進入到執行緒池 v部落格前言 先交代下背景,寫 c 多執行緒之旅 這個系列文章主要是因為以下幾個原因 1.多執行緒在c s和b s架構中用得是非常多的 2.而且多執行緒的使用是非常複雜的,如果沒有用好,容易造成很多問題。v寫在前面 多執行...
Python多執行緒之執行緒建立和終止
python主要是通過thread和threading這兩個模組來實現多執行緒支援。python的thread模組是比較底層的模組,python的threading模組是對thread做了一些封裝,可以更加方便的被使用。但是python cpython 由於gil的存在無法使用threading充分...