# A classe parallel\Future

(0.8.0)

## Futures

Um Future representa o valor de retorno ou exceção não detectada de uma tarefa e expõe uma API para cancelamento.

Exemplo #1 Exemplo mostrando Future como valor de retorno

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

O exemplo acima produzirá algo semelhante a:

    Olá Mundo

O comportamento de um future também permite que ele seja usado como um simples ponto de sincronização mesmo quando a tarefa não retorna um valor explicitamente.

Exemplo #2 Exemplo mostrando Future como ponto de sincronização

    <?php
    $runtime = new \parallel\Runtime;
    $future  = $runtime->run(function(){
        echo "no filho ";
        for ($i = 0; $i < 500; $i++) {
            if ($i % 10 == 0) {
                echo ".";
            }
        }
        echo " deixando filho";
    });

    $future->value();
    echo "\npai continua\n";
    ?>

O exemplo acima produzirá algo semelhante a:

    no filho .................................................. deixando filho
    pai continua

## Resumo da classe

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

## Índice

- parallel\Future::cancel — Cancelamento
- parallel\Future::cancelled — Detecção de estado
- parallel\Future::done — Detecção de estado
- parallel\Future::value — Resolução

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open