版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、多線程與聊天室程序的創(chuàng)建,主講人:孫鑫,http://www.sunxin.org,程序、進(jìn)程和線程--程序和進(jìn)程,程序是計(jì)算機(jī)指令的集合,它以文件的形式存儲(chǔ)在磁盤(pán)上。進(jìn)程:通常被定義為一個(gè)正在運(yùn)行的程序的實(shí)例,是一個(gè)程序在其自身的地址空間中的一次執(zhí)行活動(dòng)。進(jìn)程是資源申請(qǐng)、調(diào)度和獨(dú)立運(yùn)行的單位,因此,它使用系統(tǒng)中的運(yùn)行資源;而程序不能申請(qǐng)系統(tǒng)資源,不能被系統(tǒng)調(diào)度,也不能作為獨(dú)立運(yùn)行的單位,因此,它不占用系統(tǒng)的運(yùn)行資源。進(jìn)程由兩個(gè)
2、部分組成:1、操作系統(tǒng)用來(lái)管理進(jìn)程的內(nèi)核對(duì)象。內(nèi)核對(duì)象也是系統(tǒng)用來(lái)存放關(guān)于進(jìn)程的統(tǒng)計(jì)信息的地方。2、地址空間。它包含所有可執(zhí)行模塊或DLL模塊的代碼和數(shù)據(jù)。它還包含動(dòng)態(tài)內(nèi)存分配的空間。如線程堆棧和堆分配空間。,http://www.sunxin.org,程序、進(jìn)程和線程--進(jìn)程,進(jìn)程是不活潑的。進(jìn)程從來(lái)不執(zhí)行任何東西,它只是線程的容器。若要使進(jìn)程完成某項(xiàng)操作,它必須擁有一個(gè)在它的環(huán)境中運(yùn)行的線程,此線程負(fù)責(zé)執(zhí)行包含在進(jìn)程的地址
3、空間中的代碼。單個(gè)進(jìn)程可能包含若干個(gè)線程,這些線程都“同時(shí)” 執(zhí)行進(jìn)程地址空間中的代碼。每個(gè)進(jìn)程至少擁有一個(gè)線程,來(lái)執(zhí)行進(jìn)程的地址空間中的代碼。當(dāng)創(chuàng)建一個(gè)進(jìn)程時(shí),操作系統(tǒng)會(huì)自動(dòng)創(chuàng)建這個(gè)進(jìn)程的第一個(gè)線程,稱為主線程。此后,該線程可以創(chuàng)建其他的線程。,http://www.sunxin.org,程序、進(jìn)程和線程--進(jìn)程地址空間,系統(tǒng)賦予每個(gè)進(jìn)程獨(dú)立的虛擬地址空間。對(duì)于32位進(jìn)程來(lái)說(shuō),這個(gè)地址空間是4GB。每個(gè)進(jìn)程有它自己的私有地址空
4、間。進(jìn)程A可能有一個(gè)存放在它的地址空間中的數(shù)據(jù)結(jié)構(gòu),地址是0x12345678,而進(jìn)程B則有一個(gè)完全不同的數(shù)據(jù)結(jié)構(gòu)存放在它的地址空間中,地址是0x12345678。當(dāng)進(jìn)程A中運(yùn)行的線程訪問(wèn)地址為0x12345678的內(nèi)存時(shí),這些線程訪問(wèn)的是進(jìn)程A的數(shù)據(jù)結(jié)構(gòu)。當(dāng)進(jìn)程B中運(yùn)行的線程訪問(wèn)地址為0x12345678的內(nèi)存時(shí),這些線程訪問(wèn)的是進(jìn)程B的數(shù)據(jù)結(jié)構(gòu)。進(jìn)程A中運(yùn)行的線程不能訪問(wèn)進(jìn)程B的地址空間中的數(shù)據(jù)結(jié)構(gòu),反之亦然。4GB是虛擬的地址空
5、間,只是內(nèi)存地址的一個(gè)范圍。在你能成功地訪問(wèn)數(shù)據(jù)而不會(huì)出現(xiàn)非法訪問(wèn)之前,必須賦予物理存儲(chǔ)器,或者將物理存儲(chǔ)器映射到各個(gè)部分的地址空間。4GB虛擬地址空間中,2GB是內(nèi)核方式分區(qū),供內(nèi)核代碼、設(shè)備驅(qū)動(dòng)程序、設(shè)備I/O高速緩沖、非頁(yè)面內(nèi)存池的分配和進(jìn)程頁(yè)面表等使用,而用戶方式分區(qū)使用的地址空間約為2GB,這個(gè)分區(qū)是進(jìn)程的私有地址空間所在的地方。一個(gè)進(jìn)程不能讀取、寫(xiě)入、或者以任何方式訪問(wèn)駐留在該分區(qū)中的另一個(gè)進(jìn)程的數(shù)據(jù)。對(duì)于所有應(yīng)用程序來(lái)說(shuō)
6、,該分區(qū)是維護(hù)進(jìn)程的大部分?jǐn)?shù)據(jù)的地方。,http://www.sunxin.org,程序、進(jìn)程和線程--線程,線程由兩個(gè)部分組成:1、線程的內(nèi)核對(duì)象,操作系統(tǒng)用它來(lái)對(duì)線程實(shí)施管理。內(nèi)核對(duì)象也是系統(tǒng)用來(lái)存放線程統(tǒng)計(jì)信息的地方。2、線程堆棧,它用于維護(hù)線程在執(zhí)行代碼時(shí)需要的所有參數(shù)和局部變量。當(dāng)創(chuàng)建線程時(shí),系統(tǒng)創(chuàng)建一個(gè)線程內(nèi)核對(duì)象。該線程內(nèi)核對(duì)象不是線程本身,而是操作系統(tǒng)用來(lái)管理線程的較小的數(shù)據(jù)結(jié)構(gòu)。可以將線程內(nèi)核對(duì)象視為由關(guān)于
7、線程的統(tǒng)計(jì)信息組成的一個(gè)小型數(shù)據(jù)結(jié)構(gòu)。 線程總是在某個(gè)進(jìn)程環(huán)境中創(chuàng)建。系統(tǒng)從進(jìn)程的地址空間中分配內(nèi)存,供線程的堆棧使用。新線程運(yùn)行的進(jìn)程環(huán)境與創(chuàng)建線程的環(huán)境相同。因此,新線程可以訪問(wèn)進(jìn)程的內(nèi)核對(duì)象的所有句柄、進(jìn)程中的所有內(nèi)存和在這個(gè)相同的進(jìn)程中的所有其他線程的堆棧。這使得單個(gè)進(jìn)程中的多個(gè)線程確實(shí)能夠非常容易地互相通信。 線程只有一個(gè)內(nèi)核對(duì)象和一個(gè)堆棧,保留的記錄很少,因此所需要的內(nèi)存也很少。因?yàn)榫€程需要的開(kāi)銷(xiāo)比進(jìn)程少,因此在編程中
8、經(jīng)常采用多線程來(lái)解決編程問(wèn)題,而盡量避免創(chuàng)建新的進(jìn)程。,http://www.sunxin.org,程序、進(jìn)程和線程--線程運(yùn)行,操作系統(tǒng)為每一個(gè)運(yùn)行線程安排一定的CPU時(shí)間 —— 時(shí)間片。系統(tǒng)通過(guò)一種循環(huán)的方式為線程提供時(shí)間片,線程在自己的時(shí)間內(nèi)運(yùn)行,因時(shí)間片相當(dāng)短,因此,給用戶的感覺(jué),就好像線程是同時(shí)運(yùn)行的一樣。如果計(jì)算機(jī)擁有多個(gè)CPU,線程就能真正意義上同時(shí)運(yùn)行了。,http://www.sunxin.org,單線程程序與多線
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 用vc++簡(jiǎn)單的多線程聊天室課程設(shè)計(jì)
- java聊天室程序(java)
- 驗(yàn)證帶有線程動(dòng)態(tài)創(chuàng)建和退出多線程程序.pdf
- 驗(yàn)證帶有線程動(dòng)態(tài)創(chuàng)建和退出的多線程程序.pdf
- 基于java的聊天室程序設(shè)計(jì)
- 聊天室課程設(shè)計(jì)---聊天程序的設(shè)計(jì)和實(shí)現(xiàn)
- 聊天室說(shuō)明.txt
- 聊天室說(shuō)明.txt
- 貓版聊天室
- java聊天室設(shè)計(jì)
- java聊天室的設(shè)計(jì)與實(shí)現(xiàn)
- 聊天室說(shuō)明.txt
- 聊天室說(shuō)明.txt
- 在線聊天室系統(tǒng)
- 基于javaweb聊天室
- 聊天室說(shuō)明.txt
- 貓版聊天室.doc
- 聊天室設(shè)計(jì)與實(shí)現(xiàn)開(kāi)題報(bào)告
- 網(wǎng)絡(luò)聊天室系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- vc++課程設(shè)計(jì)--聊天室程序設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論