# The parallel\Future class

(0.8.0)

## Futures

A Future represents the return value or uncaught exception from a task, and exposes an API for cancellation.

Example #1 Example showing Future as return value

`<?php
$runtime = new \parallel\Runtime;
$future = $runtime->run(function(){
return "World";
});
printf("Hello %s\n", $future->value());
?>`

The above example will output something similar to:

    Hello World

The behaviour of a future also allows it to be used as a simple synchronization point even where the task does not return a value explicitly.

Example #2 Example showing Future as synchronization point

`<?php
$runtime = new \parallel\Runtime;
$future = $runtime->run(function(){
echo "in child ";
for ($i = 0; $i < 500; $i++) {
if ($i % 10 == 0) {
echo ".";
}
}
echo " leaving child";
});
$future->value();
echo "\nparent continues\n";
?>`

The above example will output something similar to:

    in child .................................................. leaving child
    parent continues

## Class synopsis

final parallel\Future {
/* Resolution */
public value ( ) : mixed
/* State */
public cancelled ( ) : bool
public done ( ) : bool
/* Cancellation */
public cancel ( ) : bool
}

## Table of Contents

- parallel\Future::cancel — Cancellation
- parallel\Future::cancelled — State Detection
- parallel\Future::done — State Detection
- parallel\Future::value — Resolution