寫完,調完,IO 完成端口模型

io完成端口,Io Completion Port,稱爲接口更合適,號稱是windows平臺上處理IO最快的模型,windows內部也是這樣處理的。

IO傳輸一般來說有阻塞、非阻塞、多線程阻塞、完成端口等多種模型,多線程阻塞是linux中常用的,windows中常用非阻塞即消息制,但是都有開銷大,處理高吞吐的時候心有餘而力不足的缺點。

一般來說,一臺機同時連接2000以上就要用到完成端口了,這是號稱windows上系統級處理能力最快的模型了。

原理比較簡單就是把多線程阻塞型稍加改變,本來是遇到連接就起線程,而現在先起一定數量的線程,再遇到連接的時候,線程可以直接處理,而無須干預。至少可以比多線程阻塞快一點。

寫起來倒也不復雜,用一個主線程先生成一定數量的線程,然後讓它們等着,主線程阻塞接受連接,然後綁定一下完成端口,原先的線程就自動開始處理了。在處理數據時使用Overlapped重疊模式,則可以提高性能。

代碼可以參見我的項目:www.kicoy.com

有關完成端口的資料:http://blog.csdn.net/sodme/category/13790.aspx

http://www.allife.org/index.php?job=art&articleid=a_20051227_140933

高性能網絡論壇:http://groups.google.com/group/dev4server?lnk=li

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章