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, uneAsyncCancellationstandard 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
- TaskGroup::seal — Sceller sans annulation
- TaskGroup::awaitCompletion — Attendre la fin
- TaskGroup::dispose — Liberer le scope du groupe