2

現在、 Reactive Extensions for .Net(Rx)の一部である Parallel Extensions を使用しています。.Net 4 ベータ リリースでも利用できると思います。

1) 実際に使用されているスレッドの数を特定する方法はありますか? これはEnvironment.ProcessorCount(論理コアの数)に関連していると思いますが、これを確認したいと思います。

2) 使用するスレッド数を設定する方法はありますか? ParallelOptions.MaxDegreeOfParallelism有望に見えるプロパティがあることに気付きましたが、デフォルトで -1 (スレッド数に制限なし) に設定されているように見えます。また、渡されるのではなく、現在のアプリケーションに対してこれを 1 回設定できるかどうかもよくわかりません。Parallel.For()などへの各呼び出しに

4

3 に答える 3

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 に答える
0

.Net 4.0 についてはわかりませんが、2008 年 6 月の PFX CTP にはSystem.Threading.Tasks.TaskManagerPolicy、使用されるプロセッサ数を制限するために使用しているクラスがあります。使い方の例はたくさんありますので、ググってみてください。:)

于 2009-12-14T09:24:31.337 に答える