TaskGroup::cancel
(PHP 8.6+, True Async 1.0)
php
public TaskGroup::cancel(?Async\AsyncCancellation $cancellation = null): voidAnnule 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
<?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
<?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
- TaskGroup::seal --- Sceller sans annulation
- TaskGroup::awaitCompletion --- Attendre la fin
- TaskGroup::dispose --- Liberer le scope du groupe