Параллелизм данных с помощью GPars

Я нашел этот пример здесь Параллелизм данных

GParsPool.withPool() {
    Closure longLastingCalculation = {calculate()}
    Closure fastCalculation = longLastingCalculation.async()
    Future result=fastCalculation()
    //do stuff while calculation performs …
    println result.get()
}

Я нахожу это немного обширным. Есть ли способ сократить его?
Возможно:

GParsPool.withPool() {
    Future result = calculate().async()
    //do stuff while calculation performs …
    println result.get()
}

Будет ли это работать?
Если нет, есть ли другой способ?


person Evgenij Reznik    schedule 25.01.2013    source источник


Ответы (2)


Думаю, вам понадобится:

Future result = { calculate() }.async()()
person tim_yates    schedule 25.01.2013

calculate().async() немедленно запустит метод calculate. я бы поспорил с

GParsPool.withPool() {
    Future result = {calculate()}.async().call()
    //do stuff while calculation performs …
    println result.get()
}

потому что async() возвращает замыкание. Я не уверен, что ({calculate()}.async())() будет действительным, я проверю это позже.

person Grooveek    schedule 26.01.2013