??線程(Thread)是編程中的一個(gè)很重要的概念。在很多情況下,采用多線程編程,可以提高應(yīng)用程序響應(yīng)速度、提高運(yùn)行效率、提升吞吐量。
??應(yīng)用程序的操作大致可以分為兩種類型,一種是占用CPU的(CPU-Bound),比如科學(xué)運(yùn)算、循環(huán)語(yǔ)句等;一種是不占用或極少占用CPU的(I/O-Bound),比如與各種外圍設(shè)備的交互,包括硬盤、串口、鍵盤、TCP網(wǎng)絡(luò)等。由于外圍設(shè)備的運(yùn)行速度很慢,CPU經(jīng)常會(huì)處于等待狀態(tài),因此,將對(duì)外圍設(shè)備的讀取、寫入、等待放到新建的線程中,以保證主線程可以立即執(zhí)行后續(xù)的操作,這樣是可以顯著提高運(yùn)行效率的。但是,如果將兩組耗用CPU的操作分放到兩個(gè)線程中“同時(shí)”執(zhí)行,并且應(yīng)用程序運(yùn)行在單核單CPU計(jì)算機(jī)上,那么并不會(huì)提高效率,因?yàn)镃PU同時(shí)只能執(zhí)行來自一個(gè)進(jìn)程的一條線程,它會(huì)為每個(gè)線程分配一小段時(shí)間(稱作時(shí)間片,通常為幾十毫秒)來模擬它們的同步運(yùn)行。CPU的線程切換也需要時(shí)間(兩毫秒左右),執(zhí)行保存、還原運(yùn)行現(xiàn)場(chǎng),掛起、繼續(xù)線程等操作。當(dāng)一個(gè)線程的時(shí)間片結(jié)束或被中斷時(shí),CPU會(huì)轉(zhuǎn)去執(zhí)行其他線程,此時(shí)稱該線程被搶占了。
??線程有以下幾個(gè)常用的屬性:
- ManagedThreadId屬性,托管線程Id,在進(jìn)程內(nèi)唯一。
- Name屬性,線程的名稱,默認(rèn)為空。
- ThreadState屬性,是一個(gè)位標(biāo)記,描述了線程的當(dāng)前運(yùn)行狀態(tài)。
聯(lián)系方式

