TaskGroup::cancel
(PHP 8.6+, True Async 1.0)
php
public TaskGroup::cancel(?Async\AsyncCancellation $cancellation = null): voidBricht alle laufenden Coroutinen und Aufgaben in der Warteschlange ab. Ruft implizit seal() auf. Aufgaben in der Warteschlange werden nie gestartet.
Coroutinen erhalten eine AsyncCancellation und werden beendet. Der Abbruch erfolgt asynchron --- verwenden Sie awaitCompletion(), um den Abschluss zu garantieren.
Parameter
cancellation : Die Ausnahme, die als Abbruchgrund dient. Wenn null, wird eine Standard-AsyncCancellation mit der Nachricht "TaskGroup cancelled" verwendet.
Beispiele
Beispiel #1 Abbruch mit Warten auf Abschluss
php
<?php
use Async\TaskGroup;
spawn(function() {
$group = new TaskGroup();
$group->spawn(function() {
Async\delay(10000);
return "lange Aufgabe";
});
$group->cancel();
$group->awaitCompletion();
echo "Alle Aufgaben abgebrochen\n";
});Beispiel #2 Abbruch mit Begruendung
php
<?php
use Async\TaskGroup;
spawn(function() {
$group = new TaskGroup();
$group->spawn(fn() => Async\delay(10000));
$group->cancel(new \Async\AsyncCancellation("Timeout ueberschritten"));
$group->awaitCompletion();
});Siehe auch
- TaskGroup::seal --- Versiegeln ohne Abbruch
- TaskGroup::awaitCompletion --- Auf Abschluss warten
- TaskGroup::dispose --- Den Gruppen-Scope freigeben