代码之家  ›  专栏  ›  技术社区  ›  redcalx

我可以配置并行扩展使用的线程数吗?

  •  2
  • redcalx  · 技术社区  · 14 年前

    我目前正在使用的并行扩展是 Reactive Extensions for .Net(Rx) . 我相信它们也可以通过.NET 4测试版获得。

    1)是否有任何方法可以确定实际使用了多少线程?我想这与 Environment.ProcessorCount (逻辑核心)但我想检查一下。

    2)是否有任何方法来配置您希望使用多少线程?我注意到有一个 ParallelOptions.MaxDegreeOfParallelism 属性看起来很有希望,但它似乎默认为-1(不限制线程数),我也不确定是否可以为当前应用程序设置一次,而不是每次调用 Parallel.For() 等等。

    3 回复  |  直到 10 年前
        1
  •  0
  •   Vasyl Boroviak    14 年前

    我不知道.NET 4.0,但在2008年6月的PFX CTP中 System.Threading.Tasks.TaskManagerPolicy 类,用于限制已用处理器计数。有很多关于如何使用它的例子,只要谷歌它。:)

        2
  •  0
  •   cRichter    14 年前

    有一个observable.context对象,它定义了在RX线程中如何执行并行操作。 默认实现使用全局::System.Threading.ThreadPool.QueueUserWorkItem功能。所以你可以在那里设置maxworkerthreads来定义一个最大值。

    在RX团队博客上阅读更多信息。 http://blogs.msdn.com/rxteam/archive/2009/11/21/observable-context-observable-subscribeon-and-observable-observeon.aspx

    希望这有帮助。

        3
  •  0
  •   redcalx    14 年前

    更新:此选项出现在.NET 4中; parallel选项.maxdegreeofparallelism


    在回答我自己的问题时,答案似乎只是-否。使用的线程/核心的数量似乎不可配置。