2

我目前正在使用.Net(Rx)的响应式扩展中的并行扩展。我相信它们也可以通过 .Net 4 beta 版本获得。

1)有什么方法可以确定实际使用了多少线程。我认为这与Environment.ProcessorCount(逻辑核心数)有关,但我想检查一下。

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

4

3 回答 3

0

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

于 2009-12-14T09:24:31.337 回答
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

希望这可以帮助。

于 2009-12-16T11:56:33.720 回答
0

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


在回答我自己的问题时,答案似乎很简单 - 不。使用的线程/内核数量似乎不可配置。

于 2010-02-10T22:12:45.433 回答