Windows網(wǎng)絡編程 第2版 課件 5.2.4 完成端口模型_第1頁
Windows網(wǎng)絡編程 第2版 課件 5.2.4 完成端口模型_第2頁
Windows網(wǎng)絡編程 第2版 課件 5.2.4 完成端口模型_第3頁
Windows網(wǎng)絡編程 第2版 課件 5.2.4 完成端口模型_第4頁
Windows網(wǎng)絡編程 第2版 課件 5.2.4 完成端口模型_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

網(wǎng)絡編程技術本講要點:1.完成端口模型的概念2.完成端口模型的相關函數(shù)3.完成端口模型的編程框架5.2.4完成端口模型0102完成端口模型的概念完成端口模型的相關函數(shù)

目錄/Contents03完成端口模型的編程框架重疊I/0模型無需等待操作條件就緒,操作系統(tǒng)會直接把系統(tǒng)緩存中準備好的數(shù)據(jù)拷貝到用戶緩存優(yōu)點存在問題大量客戶訪問時,為每個客戶創(chuàng)建一個線程會導致線程數(shù)過多、切換頻繁,影響性能。1.完成端口模型的概念待處理待處理待處理空閑來,時間片給你處理處理空閑處理1.完成端口模型的概念完成端口的英文全稱是Input/OutputCompletionPort,簡稱為IOCP事件選擇模型select模型重疊I/O模型完成端口模型一種應用程序使用線程池處理異步I/O請求的機制完成端口模型

系統(tǒng)在網(wǎng)絡I/O操作“完成”之后再通知應用程序已完成I/O操作事件的隊列出口1.完成端口模型的概念通知隊列先進后出WSARecv、WSASendAcceptEx都投出去完成端口應用程序操作系統(tǒng)異步:繼續(xù)做其他事操作系統(tǒng)等待數(shù)據(jù)分別類處理函數(shù)調用準備好數(shù)據(jù)有無結果立即返回將數(shù)據(jù)復制粘貼進用戶空間操作完成將通知放進隊列從隊列取通知系統(tǒng)將通知裝進通知隊列FD_ACCEPTFD_READFD_WRITEFD_CLOSE...線程隊列先進后出線程8線程7線程6線程5線程4線程3線程2線程1一根線程處理一個通知處理完沒了線程處理完通知再次回到線程隊列1.完成端口模型的概念線程池中的線程數(shù)量多少合適?理論上,最優(yōu)的線程數(shù)和CPU核數(shù)保持一致。1.完成端口模型的概念0102完成端口模型的概念完成端口模型的相關函數(shù)

目錄/Contents03完成端口模型的編程框架完成端口在操作系統(tǒng)中用一個內核對象表示。HANDLEWINAPICreateIoCompletionPort(__inHANDLEFileHandle,__in_optHANDLEExistingCompletionPort,__inULONG_PTRCompletionKey,__inDWORDNumberOfConcurrentThreads);創(chuàng)建完成端口將SOCKET與端口綁定2.完成端口模型的相關函數(shù)INVALID_HANDLE_VALUENULL允許此端口上最多同時運行的線程數(shù)量,一般設置為零,表示自動獲取CPU核數(shù)。HANDLEWINAPICreateIoCompletionPort(__inHANDLEFileHandle,__in_optHANDLEExistingCompletionPort,__inULONG_PTRCompletionKey,__inDWORDNumberOfConcurrentThreads);2.完成端口模型的相關函數(shù)與關注事件的套接字相關的鍵創(chuàng)建完成端口將SOCKET與端口綁定要綁定的套接字已創(chuàng)建的完成端口對象句柄完成端口在操作系統(tǒng)中用一個內核對象表示。2.完成端口模型的相關函數(shù)I/O操作請求投遞函數(shù)AcceptEx()WSARecv()WSASend()2.完成端口模型的相關函數(shù)通知隊列操作系統(tǒng)應用程序投遞I/O完成通知I/O完成投遞I/O完成通知I/O完成.........投遞I/O完成通知I/O完成CreateThread()CreateThread().........CreateThread()HANDLECreateThread(LPSECURITY_ATTRIBUTESlpThreadAttributes,SIZE_TdwStackSize,LPTHREAD_START_ROUTINElpStartAddress,__drv_aliasesMemLPVOIDlpParameter,DWORDdwCreationFlags,LPDWORDlpThreadId);I/O完成通知.........I/O完成通知I/O完成通知2.完成端口模型的相關函數(shù)通知隊列操作系統(tǒng)應用程序投遞I/O完成通知I/O完成投遞I/O完成通知I/O完成.........投遞I/O完成通知I/O完成I/O已完成套接字CreateThread()I/O完成通知.........GetQueuedCompletionStatus()BOOLGetQueuedCompletionStatus(HANDLECompletionPort,LPDWORDlpNumberOfBytesTransferred,PULONG_PTRlpCompletionKey,LPOVERLAPPED*lpOverlapped,DWORDdwMilliseconds);0102完成端口模型的概念完成端口模型的相關函數(shù)

目錄/Contents03完成端口模型的編程框架3.完成端口模型的編程框架開始創(chuàng)建套接字WSASocket()綁定地址與端口號bind()創(chuàng)建完成端口CreateIoCompletionPort()將套接字與完成端口綁定CreateIoCompletionPort()開始監(jiān)聽listen()創(chuàng)建線程CreateThread

溫馨提示

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

最新文檔

評論

0/150

提交評論