io完成埠模型的實現要點:
建立乙個io完成埠物件(簡稱cp物件)控制代碼(使用createiocompletionport()
建立);
使用wsarecv()
或者wsasend()
進行非同步io操作,操作完成後,系統自動啟用getqueuedcompletionstatus()
函式,進而啟用某個執行緒去處理。
注意,使用createiocompletionport()
建立cp物件時,要指定此物件最大可同時執行的最大執行緒數量(假設指定為2)。後面如果getqueuedcompletionstatus()
在多個執行緒上(假設有5個執行緒)進行等待,那麼也頂多只會啟用2個執行緒,而不會啟用5個執行緒;
《win32多執行緒程式設計》給出的執行緒池中線程建議個數是cpu核心數 * 2 + 2
;
結構體變數的位址值與結構體中第乙個成員的位址值相同;
如果getqueuedcompletionstatus()
中得到的傳輸位元組數為0,也表示對方傳遞了eof
,此時注意銷毀相關記憶體;
在伺服器端和客戶端保持較長連線的前提下頻繁傳送大小不一的訊息時(最典型的就是網遊伺服器端),才能發揮iocp模型或者epoll模型的優勢;
linux下建立的執行緒不需要關閉所謂的執行緒檔案描述符,但是windows下建立執行緒後需要關閉執行緒控制代碼。
網路程式設計學習 tcp ip程式設計
tcp 不記錄訊息邊界 udp 記錄訊息邊界 用到的結構體 struct sockaddr un 例子 struct sockaddr un serveraddr serveraddr.sun family af unix server socket strcpy serveraddr.sun pa...
Linux網路程式設計學習筆記 TCP IP基礎 1
層級名稱 作用傳輸單位 應用層提 用程式間通訊 表示層處理資料格式,資料加密等 ppdu presentation 會話層建立,維護和管理會話 spdu session 傳輸層建立端到端鏈結 segment 段 網路層定址和路由選擇 packet 包 資料鏈路層 介質訪問,鏈路管理 frame 幀 ...
網路程式設計學習筆記1 TCP IP
tcp ip協議棧是一系列網路協議的總和,是構成網路通訊的核心骨架,它定義了電子裝置如何連入網際網路,以及資料如何在它們之間進行傳輸。tcp ip協議採用4層結構,分別是應用層 傳輸層 網路層和鏈路層,每一層都呼叫它的下一層所提供的協議來完成自己的需求。tcp ip協議基本框架 當通過http發起乙...