Overlap IO與IOCP對比
有關Overlap與IOCP的區別一直搞的不是很清楚。最近仔細分別用兩種方式寫了一次代碼,總算搞清楚了。其實歸結到就一句。IO完成後的回調處理是否支持多線程處理。
區別很簡單。在進行WSARecv,WSARecvFrom,WSASend,WSASendTo函數調用之後,如果使用Overlap IO,則需要使用WaitForMultiEvents把所有的Overlap的Event數組作爲參數進行等待判定處理。這裏就使得WaitForMultiEvents不能在多個線程上對同一個Event隊列進行同時處理。限制了其對於多線程的處理。如果要使用多線程機制,則需要Event進行負載均衡分配。而如果使用IOCP, GetQueuedCompletionStatus之需要一個IOCP對象作爲參數。每次返回一個對象進行處理。則支持同時在多個線程上進行同時操作。
所以在多線程並行處理上,IOCP對於Overlap進行了擴展。overlap實現了io操作的非阻塞模式,而IOCP實現了io操作的返回的並行處理。
區別很簡單。在進行WSARecv,WSARecvFrom,WSASend,WSASendTo函數調用之後,如果使用Overlap IO,則需要使用WaitForMultiEvents把所有的Overlap的Event數組作爲參數進行等待判定處理。這裏就使得WaitForMultiEvents不能在多個線程上對同一個Event隊列進行同時處理。限制了其對於多線程的處理。如果要使用多線程機制,則需要Event進行負載均衡分配。而如果使用IOCP, GetQueuedCompletionStatus之需要一個IOCP對象作爲參數。每次返回一個對象進行處理。則支持同時在多個線程上進行同時操作。
所以在多線程並行處理上,IOCP對於Overlap進行了擴展。overlap實現了io操作的非阻塞模式,而IOCP實現了io操作的返回的並行處理。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
VCL界面組件DevExpress VCL v23.2 - 圖表控件增強
原創
2024-06-07 12:16:51
VS代碼生成工具ReSharper v2024.1全新發布——改進對C#的支持
原創
2024-06-07 12:16:50
iLogtail 2.0 重大升級,端上支持 SPL
原創
2024-06-05 21:13:43
「Qt Widget中文示例指南」如何實現一個簡單的RHI小部件示例(二)
原創
2024-06-05 12:16:38
「盤點」JetBrains IDEs v2024.1新功能一覽,更智能的開發體驗!
原創
2024-05-29 12:18:44
昔日輝煌不再,PHP老矣,尚能飯否?
原創
2024-05-23 23:48:42
實現“代碼可視化”需要了解的前置知識-編譯器中端
原創
2024-05-21 11:56:05
跨端自渲染繪製的實踐與探索
原創
2024-05-21 11:56:03
數據結構筆記淺記(十四) 樹
原創
2024-05-14 00:28:41
opencvsharp中resize圖像
osc_6mbnx553
2024-05-13 22:07:26
2024 開源之夏|報名 NebulaGraph 項目,領取你的 ¥12,000 獎金
NebulaGraph
2024-05-13 03:51:52
Spring Boot3,啓動時間縮短 10 倍!
原創
2024-05-13 02:20:47
cheerp 編譯器之通用計算模塊ccm1
原創
2024-05-12 21:53:46
雲效 Pipeline as Code 來了!這些場景,用好它效率翻倍!
原創
2024-05-11 21:15:05