0
사용 GPars를 시작 각 스레드에 대한 인덱스를 필요, 나는 3 개 병렬로 몇 가지 작업을 수행하는 스레드 ...그루비 GPars는, 그루비와
GParsPool.withPool(3){
result = myList.collectParallel{
processItem(it)
}
}
이 잘 작동하지만 내가 폐쇄에 인덱스를 필요를 시작하는 실행 된 스레드 번호를 나타냅니다. 루프가 없기 때문에 이러한 인덱스에 액세스하는 방법을 모릅니다. 모든 것이 병행되고 있습니다.
나는eachWithIndexParallel
를 사용하여 시도,이,하지만 멋져요 (ArrayList를, 정수) 그루비에서
GParsPool.withPool(3) {
result = myList.eachWithIndexParallel{ i ->
processItem(it, i)
}
}
@Vaclac 어젯밤에 놀아 났고 당신 말이 맞아요. 'eachWithIndexParallel'은 결과를 수집하지 않습니다. 그래서 명시 적 동시 처리를 피하기 위해'collectParallel'을 고집합니다. 질문 : 어떻게 알았습니까? 'eachWithIndexParallel'에는 두 개의 인수가 필요합니까? 그 정보는 어디에서 찾을 수 있습니까? – raffian
Groovy에서 이러한 메소드 (메소드에 전달 된 클로저의 예상되는 수 또는 유형)를 문서화하는 것은 일반적으로 어렵습니다. 이 경우, eachWithIndexParallel()은 Groovy의 원래 순차 eachWithIndex() 메소드의 계약을 따릅니다. –
문서 : http://gpars.org/1.2.1/groovydoc/groovyx/gpars/Parallel.html#eachWithIndexParallel%28groovy.lang.Closure%29 – pyb