多線程與聊天室程序的創(chuàng)建_第1頁
已閱讀1頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、多線程與聊天室程序的創(chuàng)建,主講人:孫鑫,http://www.sunxin.org,程序、進程和線程--程序和進程,程序是計算機指令的集合,它以文件的形式存儲在磁盤上。進程:通常被定義為一個正在運行的程序的實例,是一個程序在其自身的地址空間中的一次執(zhí)行活動。進程是資源申請、調(diào)度和獨立運行的單位,因此,它使用系統(tǒng)中的運行資源;而程序不能申請系統(tǒng)資源,不能被系統(tǒng)調(diào)度,也不能作為獨立運行的單位,因此,它不占用系統(tǒng)的運行資源。進程由兩個

2、部分組成:1、操作系統(tǒng)用來管理進程的內(nèi)核對象。內(nèi)核對象也是系統(tǒng)用來存放關(guān)于進程的統(tǒng)計信息的地方。2、地址空間。它包含所有可執(zhí)行模塊或DLL模塊的代碼和數(shù)據(jù)。它還包含動態(tài)內(nèi)存分配的空間。如線程堆棧和堆分配空間。,http://www.sunxin.org,程序、進程和線程--進程,進程是不活潑的。進程從來不執(zhí)行任何東西,它只是線程的容器。若要使進程完成某項操作,它必須擁有一個在它的環(huán)境中運行的線程,此線程負責執(zhí)行包含在進程的地址

3、空間中的代碼。單個進程可能包含若干個線程,這些線程都“同時” 執(zhí)行進程地址空間中的代碼。每個進程至少擁有一個線程,來執(zhí)行進程的地址空間中的代碼。當創(chuàng)建一個進程時,操作系統(tǒng)會自動創(chuàng)建這個進程的第一個線程,稱為主線程。此后,該線程可以創(chuàng)建其他的線程。,http://www.sunxin.org,程序、進程和線程--進程地址空間,系統(tǒng)賦予每個進程獨立的虛擬地址空間。對于32位進程來說,這個地址空間是4GB。每個進程有它自己的私有地址空

4、間。進程A可能有一個存放在它的地址空間中的數(shù)據(jù)結(jié)構(gòu),地址是0x12345678,而進程B則有一個完全不同的數(shù)據(jù)結(jié)構(gòu)存放在它的地址空間中,地址是0x12345678。當進程A中運行的線程訪問地址為0x12345678的內(nèi)存時,這些線程訪問的是進程A的數(shù)據(jù)結(jié)構(gòu)。當進程B中運行的線程訪問地址為0x12345678的內(nèi)存時,這些線程訪問的是進程B的數(shù)據(jù)結(jié)構(gòu)。進程A中運行的線程不能訪問進程B的地址空間中的數(shù)據(jù)結(jié)構(gòu),反之亦然。4GB是虛擬的地址空

5、間,只是內(nèi)存地址的一個范圍。在你能成功地訪問數(shù)據(jù)而不會出現(xiàn)非法訪問之前,必須賦予物理存儲器,或者將物理存儲器映射到各個部分的地址空間。4GB虛擬地址空間中,2GB是內(nèi)核方式分區(qū),供內(nèi)核代碼、設(shè)備驅(qū)動程序、設(shè)備I/O高速緩沖、非頁面內(nèi)存池的分配和進程頁面表等使用,而用戶方式分區(qū)使用的地址空間約為2GB,這個分區(qū)是進程的私有地址空間所在的地方。一個進程不能讀取、寫入、或者以任何方式訪問駐留在該分區(qū)中的另一個進程的數(shù)據(jù)。對于所有應用程序來說

6、,該分區(qū)是維護進程的大部分數(shù)據(jù)的地方。,http://www.sunxin.org,程序、進程和線程--線程,線程由兩個部分組成:1、線程的內(nèi)核對象,操作系統(tǒng)用它來對線程實施管理。內(nèi)核對象也是系統(tǒng)用來存放線程統(tǒng)計信息的地方。2、線程堆棧,它用于維護線程在執(zhí)行代碼時需要的所有參數(shù)和局部變量。當創(chuàng)建線程時,系統(tǒng)創(chuàng)建一個線程內(nèi)核對象。該線程內(nèi)核對象不是線程本身,而是操作系統(tǒng)用來管理線程的較小的數(shù)據(jù)結(jié)構(gòu)。可以將線程內(nèi)核對象視為由關(guān)于

7、線程的統(tǒng)計信息組成的一個小型數(shù)據(jù)結(jié)構(gòu)。 線程總是在某個進程環(huán)境中創(chuàng)建。系統(tǒng)從進程的地址空間中分配內(nèi)存,供線程的堆棧使用。新線程運行的進程環(huán)境與創(chuàng)建線程的環(huán)境相同。因此,新線程可以訪問進程的內(nèi)核對象的所有句柄、進程中的所有內(nèi)存和在這個相同的進程中的所有其他線程的堆棧。這使得單個進程中的多個線程確實能夠非常容易地互相通信。 線程只有一個內(nèi)核對象和一個堆棧,保留的記錄很少,因此所需要的內(nèi)存也很少。因為線程需要的開銷比進程少,因此在編程中

8、經(jīng)常采用多線程來解決編程問題,而盡量避免創(chuàng)建新的進程。,http://www.sunxin.org,程序、進程和線程--線程運行,操作系統(tǒng)為每一個運行線程安排一定的CPU時間 —— 時間片。系統(tǒng)通過一種循環(huán)的方式為線程提供時間片,線程在自己的時間內(nèi)運行,因時間片相當短,因此,給用戶的感覺,就好像線程是同時運行的一樣。如果計算機擁有多個CPU,線程就能真正意義上同時運行了。,http://www.sunxin.org,單線程程序與多線

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論