TaskGroup::cancel

(PHP 8.6+, True Async 1.0)

public TaskGroup::cancel(?Async\AsyncCancellation $cancellation = null): void

Annule toutes les coroutines en cours d’execution et les taches en file d’attente. Appelle implicitement seal(). Les taches en file d’attente ne sont jamais demarrees.

Les coroutines recoivent une AsyncCancellation et se terminent. L’annulation se fait de maniere asynchrone — utilisez awaitCompletion() pour garantir la fin.

Parametres

cancellation
L’exception servant de raison d’annulation. Si null, une AsyncCancellation standard avec le message “TaskGroup cancelled” est utilisee.

Exemples

Exemple #1 Annulation avec attente de fin

<?php

use Async\TaskGroup;

spawn(function() {
    $group = new TaskGroup();

    $group->spawn(function() {
        Async\delay(10000);
        return "long task";
    });

    $group->cancel();
    $group->awaitCompletion();

    echo "toutes les taches annulees\n";
});

Exemple #2 Annulation avec une raison

<?php

use Async\TaskGroup;

spawn(function() {
    $group = new TaskGroup();
    $group->spawn(fn() => Async\delay(10000));

    $group->cancel(new \Async\AsyncCancellation("Timeout exceeded"));
    $group->awaitCompletion();
});

Voir aussi