を立ち上げ、各スレッドのインデックスを必要とする、私は並行していくつかの作業を行うために3つのスレッドを起動...GroovyのGPars、Groovyの持つGParsを使用して
GParsPool.withPool(3){
result = myList.collectParallel{
processItem(it)
}
}
これは正常に動作しますが、私はその閉鎖にインデックスを必要とします起動されたスレッド番号を表します。ループがないので、そのようなインデックスにアクセスする方法は不明です。すべてが並行して起こっています。
グルービーに)eachWithIndexに(
GParsPool.withPool(3) {
result = myList.eachWithIndexParallel{ i ->
processItem(it, i)
}
}
@Vaclac最後の夜に遊んでいて、あなたが正しいとすれば、 'eachWithIndexParallel'は結果を収集しないので、明示的な並行処理を避けるために' collectParallel'を使っています...質問: 'eachWithIndexParallel'には2つの引数が必要ですか?その情報はどこにありますか? – raffian
Groovyでそのようなもの(メソッドに渡されるクロージャの予想される数またはタイプの引数)を記述することは一般的には難しいです。この特定のケースでは、eachWithIndexParallel()はGroovyのオリジナルのsequentialWithIndex()メソッドのコントラクトにちょうど従います。 –
ドキュメント:http://gpars.org/1.2.1/groovydoc/groovyx/gpars/Parallel.html#eachWithIndexParallel%28groovy.lang.Closure%29 – pyb