我正在搜索互联网上的自定义线程池实现。 我找到了一个使用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. 编写自定义线程池
- 2. IOCP线程VS线程池来处理消息
- 3. 自定义线程池/多线程在春季启动休息
- 4. 停止在自定义线程池中的所有线程(如关闭)
- 5. 我的自定义线程池出了什么问题?
- 6. C#。是否有自定义线程池的.NET类
- 7. 具有单独实例的.NET自定义线程池
- 8. 线程池中的线程
- 9. FFmpeg:使用自定义线程池并行编码
- 10. 自定义线程池支持异步操作
- 11. 在作业池中使用iocp
- 12. Python多处理:自定义进程池
- 13. 线程中的自定义函数
- 14. 线程池中的线程状态
- 15. 线程池中的活动线程号
- 16. 线程池中线程的可用性?
- 17. 固定线程池和预定线程池之间的Java差异
- 18. iPhone:在自定义Autorelease池中崩溃
- 19. 多线程IOCP客户端问题
- 20. .NET如何处理IOCP线程安全?
- 21. Qt 4.3中的线程池
- 22. Java中的线程池
- 23. CocoaTouch中的线程池?
- 24. 线程池stucks
- 25. PHP线程池?
- 26. C++线程池
- 27. Servlet线程池
- 28. QThread线程池
- 29. 线程池:DispatchQueue.main.async
- 30. Windows线程池
也许你可以添加链接到你找到的自定义线程池实现? – 2009-01-13 17:51:44