本節書摘來自華章出版社《c#多線程程式設計實戰(原書第2版)》一書中的第1章,第1.1節,作者(美)易格恩·阿格佛溫(eugene agafonov),黃博文 黃輝蘭 譯,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。
本章将涵蓋c#中使用線程的基本操作。
你将學到以下内容:
使用c#建立線程
暫停線程
線程等待
終止線程
檢測線程狀态
線程優先級
前台線程和背景線程
向線程傳參
使用c#中的lock關鍵字
使用monitor類鎖定資源
處理異常
過去普通計算機隻有一個計算單元,不能同時執行多個計算任務。然而作業系統卻已經可以同時運作多個應用程式,即實作了多任務的概念。為了防止一個應用程式控制cpu而導緻其他應用程式和作業系統本身永遠被挂起這一可能情況,作業系統不得不使用某種方式将實體計算單元分割為一些虛拟的程序,并給予每個執行程式一定量的計算能力。此外,作業系統必須始終能夠優先通路cpu,并能調整不同程式通路cpu的優先級。線程正是這一概念的實作。可以認為線程是一個虛拟程序,用于獨立運作一個特定的程式。
是以,雖然有可能提高計算機的處理器能力,使得計算機每秒鐘能執行越來越多的指令,但是使用線程通常是一個作業系統任務,試圖在單核cpu上并行執行計算任務是沒有意義的,因為這比順序運作會花費更多的時間。然而,當處理器擁有多核時,過去的應用程式則不能使用這個優勢,因為它們隻使用了一個處理核心。
為了有效地利用現代處理器的計算能力,使用某種方式讓程式能使用不止一個處理核心是非常重要的。這需要組織多個線程間的通信和互相同步。
本章中的内容将關注于使用c#語言執行一些非常基本的線程操作。我們将介紹線程的生命周期,其包括建立線程、挂起線程、線程等待,以及中止線程。然後我們會介紹一些基本的線程同步技術。