Scope::dispose

(PHP 8.6+, True Async 1.0)

public function dispose(): void

Bricht erzwungen alle Koroutinen im Scope ab und schliesst ihn. Nach dem Aufruf von dispose() wird der Scope als geschlossen und abgebrochen markiert. Einem geschlossenen Scope koennen keine neuen Koroutinen hinzugefuegt werden.

Dies entspricht dem Aufruf von cancel() gefolgt vom Schliessen des Scopes.

Rueckgabewert

Es wird kein Wert zurueckgegeben.

Beispiele

Beispiel #1 Erzwungenes Schliessen eines Scopes

<?php

use Async\Scope;

$scope = new Scope();

$scope->spawn(function() {
    try {
        \Async\delay(60_000);
    } catch (\Async\CancelledException) {
        echo "Koroutine beim Dispose abgebrochen\n";
    }
});

// Alle Koroutinen werden abgebrochen, Scope geschlossen
$scope->dispose();

var_dump($scope->isClosed());    // bool(true)
var_dump($scope->isCancelled()); // bool(true)

Beispiel #2 Bereinigung in einem try/finally-Block

<?php

use Async\Scope;

$scope = new Scope();

try {
    $scope->spawn(function() {
        // Geschaeftslogik
        \Async\delay(5000);
    });

    $scope->awaitCompletion();
} finally {
    $scope->dispose();
}

Siehe auch