六種Socket I O模型

2021-04-13 07:56:30 字數 822 閱讀 5906

*****完成埠模型*****

抽象出乙個完成埠大概的處理流程:

1:建立乙個完成埠。

2:建立乙個執行緒a。

3:a執行緒迴圈呼叫getqueuedcompletionstatus()函式來得到io操作結果,這個函式是個阻塞函式。

4:主線程迴圈裡呼叫accept等待客戶端連線上來。 

5:主線程裡accept返回新連線建立以後,把這個新的套接字控制代碼用createiocompletionport關聯到完成埠,然後發出乙個非同步的wsasend或者wsarecv呼叫,因為是非同步函式,wsasend/wsarecv會馬上返回,實際的傳送或者接收資料的操作由windows系統去做。

6:主線程繼續下一次迴圈,阻塞在accept這裡等待客戶端連線。

7:windows系統完成wsasend或者wsarecv的操作,把結果發到完成埠。

8:a執行緒裡的getqueuedcompletionstatus()馬上返回,並從完成埠取得剛完成的wsasend/wsarecv的結果。

9:在a執行緒裡對這些資料進行處理(如果處理過程很耗時,需要新開執行緒處理),然後接著發出wsasend/wsarecv,並繼續下一次迴圈阻塞在getqueuedcompletionstatus()這裡。

歸根到底概括完成埠模型一句話:

我們不停地發出非同步的wsasend/wsarecv io操作,具體的io處理過程由windows系統完成,windows系統完成實際的io處理後,把結果送到完成埠上(如果有多個io都完成了,那麼就在完成埠那裡排成乙個佇列)。我們在另外乙個執行緒裡從完成埠不斷地取出io操作結果,然後根據需要再發出wsasend/wsarecv io操作。

CSS的六種定位模型

css支援6種定位模型 而沒設定位置的靜態塊級,當發生重疊時,他們的行內內容不會重疊,但是他們的 邊框和背景會發生重疊,但文字不會.適用於所有元素,預設auto position static 預設是static position absolute div對於靜態行內元素,如em,strong,sp...

CSS的六種定位模型

css支援6種定位模型 設定了位置的元素是原子顯示的,這意味著它的靜態後代元素,行內內容和背景之間不可能出現外部元素.通過使用相對定位,絕對定位和固定定位模式,就可以將元素設定為原子顯示,設定為overflow scroll auto的塊級元素也是原子顯示的 而沒設定位置的靜態塊級,當發生重疊時,他...

六種領導風格

將乙個團隊從普通打造成不普通,意味著理解與接受團隊中管理能力和領導能力的不同之處。作家兼顧問peter drucker說過 管理能力就是讓事情做對 領導能力就是做正確的事情。在公司中,管理人員和領導人員,有時我們可能會這兩者混為一談,但這兩個職位是完全不同的。管理人員是促使團隊成員取得成功的促進者,...