我可以配置Parallel Extensions使用的线程数吗?

时间:2009-12-13 18:01:43

标签: .net parallel-extensions

我目前正在使用属于Reactive Extensions for .Net(Rx)的并行扩展程序。我相信它们也可以通过.Net 4 beta版本获得。

1)有没有办法确定实际使用了多少线程。我假设这与Environment.ProcessorCount(逻辑核的数量)有关,但我想检查一下。

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

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

有Observable.Context对象,它定义了如何在Rx线程内完成并行操作。 默认实现使用global :: System.Threading.ThreadPool.QueueUserWorkItem功能。所以你可以在那里设置MaxWorkerThreads来定义最大值。

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

希望这会有所帮助。

答案 2 :(得分:0)

更新:此选项出现在.Net 4中; ParallelOptions.MaxDegreeOfParallelism


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