TaskGroup::cancel
(PHP 8.6+, True Async 1.0)
public TaskGroup::cancel(?Async\AsyncCancellation $cancellation = null): void
Bricht 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-AsyncCancellationmit der Nachricht “TaskGroup cancelled” verwendet.
Beispiele
Beispiel #1 Abbruch mit Warten auf Abschluss
<?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
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