10

tasksupport可変フィールドを介して、単一の並列コレクションの並列処理レベルを設定する方法を理解しています( https://stackoverflow.com/a/5425354/82970を参照)。

Scala 2.10のすべての新しい並列コレクションの並列処理レベルを設定するにはどうすればよいですか?

補助的な質問---それからtasksupport構築された新しい並列コレクションによって「継承された」並列コレクションに関連付けられていますか?(例:takemapなど)

4

1 に答える 1

10
  1. ソースを簡単に見て、物事を正しく理解していれば、デフォルトの実行コンテキストを構成するために使用できる3つのシステムプロパティがあります。これは、デフォルトのタスクサポートとして使用されているようです。これらは、タスクサポートオブジェクトの並列処理レベルを決定します。

    • scala.concurrent.context.minThreads:Int、最小並列性レベル
    • scala.concurrent.context.numThreads:直接使用する並列処理レベルを指定するInt、または文字列:「x」の後にDouble(たとえば、「x1.5」)が続き、その後に乗算されます。Runtime.getRuntime.availableProcessors
    • scala.concurrent.context.maxThreads:Int、最大並列度レベル

    関連するソースファイル(すべてを正しく実行した場合)はExecutionContextImplのようです。

  2. 質問の2番目の部分については、などの
    変換操作は、元のコレクションに設定されているタスクサポートを保持する必要があります。少なくともソースはそのように見えます。:) ほとんどの並列操作はParIterableLikeで定義され、Combiner呼び出すか( ParIterableLikeの行568または581でファクトリを介して元のタスクサポートセットを取得します)、結果のコレクションに直接タスクサポートを設定します。mapfilter
    resultWithTaskSupport

于 2013-01-12T08:36:55.650 に答える