【问题标题】:Does any one know how to use IOCompletionPortTaskScheduler and IOTaskScheduler in PrallelExtensionExtras and what are their use?有谁知道如何在 PrallelExtensionExtras 中使用 IOCompletionPortTaskScheduler 和 IOTaskScheduler 以及它们的用途是什么?
【发布时间】:2010-12-31 07:21:19
【问题描述】:

有谁知道如何在 ParallelExtensionExtras 中使用以下类以及它们的用途?

IOCompletionPortTaskScheduler.cs
IOTaskScheduler.cs

【问题讨论】:

    标签: c# .net parallel-processing task-parallel-library


    【解决方案1】:

    IOTaskScheduler

    虽然我们经常提到“那个”.NET 线程池,ThreadPool .NET 中的抽象实际上是构建的 在两个池的顶部,一个称为 作为工人池和一个被称为 作为 I/O 池。前者是什么 以QueueUserWorkItem为目标 方法以及默认情况下 TaskScheduler,而后者是 被针对 UnsafeQueueNativeOverlapped 方法, 并且经常用于工作 Windows 通信基础和 Windows 工作流基础。这 IOTaskScheduler 调度程序在 IOTaskScheduler.cs 文件运行任务 这个 I/O 线程池通过 UnsafeQueueNativeOverlapped 方法。

    从这里:http://blogs.msdn.com/b/pfxteam/archive/2010/04/09/9990424.aspx

    【讨论】:

    • 它主要是作为实现调度程序以针对特定执行环境的另一个示例。一个“ThreadPool”中实际上有两个线程池,worker pool和I/O pool。通常,TPL 以前者为目标(与 QueueUserWorkItem 相同)。 .NET 中还有其他针对后者的系统,例如 WCF。因此,如果您想通过让 TPL 任务与 WCF 的工作在同一个池中运行来最大限度地减少 WCF 和 TPL 之间的超额订阅,您可以使用类似 IOTaskScheduler 的调度程序。
    • 这也提供了一些见解:blogs.msdn.com/b/junfeng/archive/2008/11/24/…
    • 为什么要使用 ThreadPool.UnsafeQueueNativeOverlapped 而不是 ThreadPool.QueueUserWorkItem?在我们的开发中,我们发现 ThreadPool.QueueUserWorkItem 效率低下。如果我们有一些交替的高低数量的工作项,一些线程可能会忙于等待,人为地增加我们应用程序的 CPU 使用率。如果您有相同的模式,并且在不应该的情况下观察到高 CPU 使用率,您可以尝试 ThreadPool.UnsafeQueueNativeOverlapped。 ***我:这是一个超额认购的例子
    【解决方案2】:

    IOCompletionPortTaskScheduler 类提供了一个任务调度器 使用 I/O 完成端口来控制并发。这是 需要将调度程序中的最大线程数设置为 并发执行和可用的线程数 用于执行任务的调度程序。

    从这里:http://www.drdobbs.com/parallel/specialized-task-schedulers-in-net-4-par/228800428

    以下来自:http://msdn.microsoft.com/en-us/library/windows/desktop/aa365198%28v=vs.85%29.aspx

    I/O 完成端口为 在多处理器上处理多个异步 I/O 请求 系统。当一个进程创建一个 I/O 完成端口时,系统 为唯一目的是的请求创建一个关联的队列对象 为这些请求提供服务。处理许多并发的进程 异步 I/O 请求可以通过以下方式更快、更有效地做到这一点 结合预分配线程使用 I/O 完成端口 池而不是在线程收到 I/O 请求时创建线程。

    【讨论】:

      猜你喜欢
      • 2012-06-19
      • 1970-01-01
      • 2017-09-22
      • 2014-12-13
      • 2010-10-13
      • 2021-05-11
      • 1970-01-01
      • 2011-07-04
      • 2016-10-24
      相关资源
      最近更新 更多