ComposantsTaskGroup::cancel

TaskGroup::cancel ​

(PHP 8.6+, True Async 1.0)

php
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 close(). 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
<?php

use Async\TaskGroup;

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

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

    $group->cancel();
    $group->awaitCompletion(Async\timeout(5000));

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

Exemple #2 Annulation avec une raison ​

php
<?php

use Async\TaskGroup;

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

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

Voir aussi ​