我正在搜索互聯網上的自定義線程池實現。 我找到了一個使用IOCP的實現。我想知道使用它們有什麼好處?他們提供盜竊工作,或類似的東西,我真的可以找到答案...自定義線程池中的IOCP
回答
IOCP =「IO完成端口」。它是內置於Windows操作系統中的內核對象,可爲您提供管理多線程異步IO的智能方式。
在非常簡單化(以及稍微過度簡化)的術語中,您告訴IOCP您要完成的IO作業。它將異步執行它們並保持每個作業結果的隊列。您立即返回通知IOCP有關作業的呼叫(在IO發生時它不會阻止)。您將返回一個概念上類似於.NET IAsyncResult的對象......它可以讓您在選擇時阻止,或者您可以提供回調,或者可以定期輪詢以查看作業是否完成。
在做這些工作時,IOCP使用線程池。線程池嘗試將線程數限制爲處理器數量或更少(這是可配置的,但意圖和默認設置將其限制爲處理器數量)。但是,IOCP規定有時這些線程上的任務可能會被阻塞。 Asycn IO任務不會阻塞,但您可能已經提供了其他一些任務。因此,您可以爲IOCP提供另一個數字......這是「正常最大值」之上的多個線程,由於其他線程中的一個線程被阻塞,允許IOCP上升。目標是達到實際做某些事情(即不被阻止)的線程的「通常最大值」。如果發生這種情況,那麼一段時間內IOCP將使用比通常的最大線程更多的線程,但它會拒絕創建任何新線程,直到它回到「通常的最大值」。
這是一個簡單的總結,只是概念性的,正如我所說的,在某些方面過於簡化。但它應該給你一個總的想法。 Jeffrey Richter在Windows操作系統上的書籍詳細介紹了這些內容(但這些書已經絕版了)。你可以找到這些使用的書籍,而且實際上它們比原來使用的花費更多。我認爲「高級Windows」是你想要的標題,但是可能有一本書的更新版本帶有不同的標題。
偉大的描述。謝謝! – John 2009-04-25 14:22:18
如果您打算在工作線程中使用Windows IO功能,則可以使用IOCP實現。 IO功能可以讀/寫到磁盤或網絡。
查看推送框架http://www.pushframework.com查看實時服務器實現的IOCP用法。
- 1. 自定義線程池C#問題
- 2. 編寫自定義線程池
- 3. IOCP線程VS線程池來處理消息
- 4. 自定義線程池/多線程在春季啓動休息
- 5. IOCP線程處理
- 6. 停止在自定義線程池中的所有線程(如關閉)
- 7. 具有單獨實例的.NET自定義線程池
- 8. 我的自定義線程池出了什麼問題?
- 9. C#。是否有自定義線程池的.NET類
- 10. 線程池中的線程
- 11. 在作業池中使用iocp
- 12. 在自定義線程池上運行作業
- 13. FFmpeg:使用自定義線程池並行編碼
- 14. ASP.NET MVC什麼線程池用於自定義任務?
- 15. 自定義線程池支持異步操作
- 16. Python多處理:自定義進程池
- 17. 固定線程池和緩存線程池參數的差異
- 18. Akka中的自定義線程邏輯
- 19. 線程中的自定義函數
- 20. ASP.Net中的線程池定期關閉
- 21. 自定義連接池
- 22. 鎖定和線程池
- 23. pthread退出線程池中的線程
- 24. 線程池中的活動線程號
- 25. 線程池中的線程狀態
- 26. 線程池中線程的可用性?
- 27. 終止線程池中的線程
- 28. 固定線程池和預定線程池之間的Java差異
- 29. 多線程IOCP客戶端問題
- 30. .NET如何處理IOCP線程安全?
也許你可以添加鏈接到你找到的自定義線程池實現? – 2009-01-13 17:51:44