KomponentenThreadPool::getRunningCount()

ThreadPool::getRunningCount()

(PHP 8.6+, True Async 1.0)

php
public ThreadPool::getRunningCount(): int

Gibt die Anzahl der Aufgaben zurück, die derzeit von einem Worker-Thread ausgeführt werden (d. h. aus der Warteschlange entnommen und noch nicht abgeschlossen). Der Maximalwert ist durch die Anzahl der Worker begrenzt. Dieser Zähler wird durch eine atomare Variable gesichert und ist zu jedem Zeitpunkt genau.

Rückgabewert

int — Anzahl der Aufgaben, die aktuell auf allen Worker-Threads ausgeführt werden.

Beispiele

Beispiel #1 Laufenden Zähler während der Aufgabenausführung beobachten

php
<?php

use Async\ThreadPool;
use function Async\spawn;
use function Async\await;
use function Async\delay;

spawn(function() {
    $pool = new ThreadPool(workers: 3);

    $futures = [];
    for ($i = 0; $i < 6; $i++) {
        $futures[] = $pool->submit(function() {
            $t = microtime(true);
            while (microtime(true) - $t < 0.1) {}
            return 'done';
        });
    }

    delay(10); // Worker Zeit zum Starten geben

    echo "worker:  ", $pool->getWorkerCount(), "\n";  // worker:  3
    echo "laufend: ", $pool->getRunningCount(), "\n"; // laufend: 3

    foreach ($futures as $f) {
        await($f);
    }

    echo "laufend: ", $pool->getRunningCount(), "\n"; // laufend: 0

    $pool->close();
});

Siehe auch