Есть статья Википедии о фьючерсах. Короче говоря, это способ использовать значение, которое еще не известно. Затем значение может быть рассчитано по требованию (отложенная оценка) и, необязательно, одновременно с основным расчетом.
C ++ пример.
Скажем, вы хотите вычислить сумму двух чисел. Вы можете использовать типичную реализацию:
int add(int i, int j) { return i + j; }
// first calculate both Nth_prime results then pass them to add
int sum = add(Nth_prime(4), Nth_prime(2));
или вы можете использовать фьючерсный способ, используя C ++ 11 std::async
, который возвращает std::future
. В этом случае функция add
будет блокироваться, только если она попытается использовать значение, которое еще не было вычислено (можно также создать чисто ленивую альтернативу).
int add(future<int> i, future<int> j) { return i.get() + j.get(); }
int sum = add(async(launch::async, [](){ return Nth_prime(4); }),
async(launch::async, [](){ return Nth_prime(2); }));