У нас есть код на Java с помощью ThreadPoolExecutor и CompletionService. Задачи подаются большими партиями в пул; результаты идут на службу завершения, где мы собираем завершенные задачи, когда доступны, не дожидаясь всей партии для завершения:сбор результатов асинхронно от gpars parallel executor
ThreadPoolExecutor _executorService =
new ThreadPoolExecutor(MAX_NUMBER_OF_WORKERS, new LinkedBlockingQueue(20));
CompletionService _completionService =
new ExecutorCompletionService<Callable>(_executorService)
//submit tasks
_completionService.submit(some task);
//get results
while(...){
Future result = _completionService.poll(timeout);
if(result)
//process result
}
Общее число работников в бассейне MAX_NUMBER_OF_WORKERS; задачи, представленные без доступного рабочего, помещаются в очередь; до 20 задач могут быть поставлены в очередь, после чего задачи отклонены.
Что такое Gpars Аналогию этому подходу?
Чтение в documentation на gpars параллелизм, я нашел много возможных вариантов: collectManyParallel()
, anyParallel()
, fork/join
и т.д., и я не уверен, какие из них даже тест. Я надеялся найти упоминание о «завершении» или «завершении службы» в качестве сравнения в документах, но ничего не нашел. Я ищу некоторые направления/указатели, где начинать с тех, кто сталкивается с gpars.
выглядит очень интересно, я проверю это, – raffian