細(xì)說(shuō)多線程(一)—— 線程的定義 |
發(fā)布時(shí)間: 2012/9/16 6:31:57 |
引言 本文主要從線程的基礎(chǔ)用法,CLR線程池當(dāng)中工作者線程與I/O線程的開(kāi)發(fā),并行操作PLINQ等多個(gè)方面介紹多線程的開(kāi)發(fā)。 目錄 三、以ThreadStart方式實(shí)現(xiàn)多線程
一、線程的定義 1. 1 進(jìn)程、應(yīng)用程序域與線程的關(guān)系 進(jìn)程(Process)是Windows系統(tǒng)中的一個(gè)基本概念,它包含著一個(gè)運(yùn)行程序所需要的資源。進(jìn)程之間是相對(duì)獨(dú)立的,一個(gè)進(jìn)程無(wú)法訪問(wèn)另一個(gè) 進(jìn)程的數(shù)據(jù)(除非利用分布式計(jì)算方式),一個(gè)進(jìn)程運(yùn)行的失敗也不會(huì)影響其他進(jìn)程的運(yùn)行,Windows系統(tǒng)就是利用進(jìn)程把工作劃分為多個(gè)獨(dú)立的區(qū)域的。進(jìn) 程可以理解為一個(gè)程序的基本邊界。 應(yīng)用程序域(AppDomain)是一個(gè)程序運(yùn)行的邏輯區(qū)域,它可以視為一個(gè)輕量級(jí)的進(jìn)程,.NET的程序集正是在應(yīng)用程序域中運(yùn)行的,一個(gè)進(jìn)程可 以包含有多個(gè)應(yīng)用程序域,一個(gè)應(yīng)用程序域也可以包含多個(gè)程序集。在一個(gè)應(yīng)用程序域中包含了一個(gè)或多個(gè)上下文context,使用上下文CLR就能夠把某些 特殊對(duì)象的狀態(tài)放置在不同容器當(dāng)中。 線程(Thread)是進(jìn)程中的基本執(zhí)行單元,在進(jìn)程入口執(zhí)行的第一個(gè)線程被視為這個(gè)進(jìn)程的主線程。在.NET應(yīng)用程序中,都是以Main()方法 作為入口的,當(dāng)調(diào)用此方法時(shí)系統(tǒng)就會(huì)自動(dòng)創(chuàng)建一個(gè)主線程。線程主要是由CPU寄存器、調(diào)用棧和線程本地存儲(chǔ)器(Thread Local Storage,TLS)組成的。CPU寄存器主要記錄當(dāng)前所執(zhí)行線程的狀態(tài),調(diào)用棧主要用于維護(hù)線程所調(diào)用到的內(nèi)存與數(shù)據(jù),TLS主要用于存放線程的狀 態(tài)信息。 進(jìn)程、應(yīng)用程序域、線程的關(guān)系如下圖,一個(gè)進(jìn)程內(nèi)可以包括多個(gè)應(yīng)用程序域,也有包括多個(gè)線程,線程也可以穿梭于多個(gè)應(yīng)用程序域當(dāng)中。但在同一個(gè)時(shí)刻,線程只會(huì)處于一個(gè)應(yīng)用程序域內(nèi)。
1.2 多線程 在單CPU系統(tǒng)的一個(gè)單位時(shí)間(time slice)內(nèi),CPU只能運(yùn)行單個(gè)線程,運(yùn)行順序取決于線程的優(yōu)先級(jí)別。如果在單位時(shí)間內(nèi)線程未能完成執(zhí)行,系統(tǒng)就會(huì)把線程的狀態(tài)信息保存到線程的本地 存儲(chǔ)器(TLS) 中,以便下次執(zhí)行時(shí)恢復(fù)執(zhí)行。而多線程只是系統(tǒng)帶來(lái)的一個(gè)假像,它在多個(gè)單位時(shí)間內(nèi)進(jìn)行多個(gè)線程的切換。因?yàn)榍袚Q頻密而且單位時(shí)間非常短暫,所以多線程可 被視作同時(shí)運(yùn)行。 適當(dāng)使用多線程能提高系統(tǒng)的性能,比如:在系統(tǒng)請(qǐng)求大容量的數(shù)據(jù)時(shí)使用多線程,把數(shù)據(jù)輸出工作交給異步線程,使主線程保持其穩(wěn)定性去處理其他問(wèn)題。但需要注意一點(diǎn),因?yàn)镃PU需要花費(fèi)不少的時(shí)間在線程的切換上,所以過(guò)多地使用多線程反而會(huì)導(dǎo)致性能的下降。 億恩-天使(QQ:530997) 電話 037160135991 服務(wù)器租用,托管歡迎咨詢。 本文出自:億恩科技【www.ibaoshan.net】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |