2012-07-05 1 views
0

나는 parallized 하위 작업 집합의 순차적으로 실행되는 부분에서 큰 작업을 분리 할 수있는 GPars 기능을 찾고 있습니다. 병렬 작업 블록의 크기 THREADCOUNT를 갖는 각각의두고 순차적 할당하고, 즉 순회 K의 배열 크기GPars 해당 부분에 고정 크기 병렬 처리를 수행하는 큰 목록 처리

.

즉, 첫 번째 배열을 반복하지 않고 모든 작업을 한 번에 제출하지 않고 이전 블록이 준비되었을 때 (즉, OOM을 방지 할 때) 즉 페이지 매김을 사용하여 순서대로 할당을 수행합니다.

아래와 같은 코드가 있지만 페이지를 나열하고 처음에 작업을 제출하는 대신 페이지를 순서대로 처리해야합니다.

myHugeList.getNextPage().each { withPool(threadCount) { Closure.callAsync().get() } }

감사합니다, Yefym

당신은이 라인을 따라 뭔가를 찾고있을 수 있습니다

답변

0

:

withPool (numOfThreads) {(myHugeList.splitIntoPages에서 entriesInPage) { resultPages에 대한 < < entriesInPage.collectParallel (myClosure) } } 단점은 각 반복 이전 스레드가 완료 될 때까지 기다리므로 일부 스레드가 제대로 활용되지 않을 수 있습니다.

하나의 대안은 myHugeList를 관리하는 디스패처에서 작업을 끌어 오는 액터 그룹 일 수 있습니다.