概念:進程是計算機上的一次執行活動,是程序的一次動態執行過程,是操作系統進行資源分配的單位,當運行一個程序就啟動一個進程。PRocess可以訪問本地或遠程計算機上的進程,并且可以啟動和終止本地系統中的進程(System.Diagnostics)
線程是操作系統分配處理器時間的基本單元,是多個操作系統看起來像同時發生(System.Threading)
多線程優點:1.用戶界面響應時還可做后臺操作 2.按優先級執行任務 3.通過網絡連接到web服務器或數據庫
多線程缺點:1.加重系統的負荷可能會導致性能降低 2.控制多線程的代碼比較難,可能導致很多bug
多線程:線程是指程序中的一個單一的順序控制流,線程是進程中的實體。一個進程可以擁有多個線程,一個線程必須有一個父線程。線程不擁有系統資源,只有運行必須的一些數據結構。它與父線程的其他線程共享該進程所擁有的全部資源。線程可以創建撤銷,從而實現程序的并發執行
死鎖:死鎖是指使用共享資源的兩個或多個線程各自占有一些共享資源,并且互相等待其他線程占有的資源才能進行,而導致兩個或者多個線程都在等待對方釋放資源,都停止執行的情形。
實例:
啟動線程:
構造方法用 ThreadStart 代理作為參數;ThreadStart 指向的方法將在線程中執行;線程是通過Start方法來啟動
Thread t = new Thread(new ThreadStart(MyClass.AStaticMethod));
t.Start();
線程的屬性和參數:
Thread.Name獲取或設置線程名;Thread.Priority獲取或設置線程優先級;Thread.IsBackground線程是否可在后臺運行
管理線程:
Thread.Sleep 阻塞當前線程 Thread.Sleep(3000); // blocks for 3 seconds
Suspend和Resume并不常用可能導致死鎖等應用程序的嚴重問題
Thread.Join 等待其它線程停止 t.Join(); // Wait for the thread to exit
Thread.WaitHandle 等待一個或多個事件 WaitHandle.WaitAll(waitEvents);
Thread.ThreadState 屬性——線程狀態
中斷和結束線程:
Thread.Interrupt 方法 中斷處于執行狀態的線程 ;Thread.Abort 方法 結束線程運行
新聞熱點
疑難解答