ThreadPool::getWorkerCount()
(PHP 8.6+, True Async 1.0)
php
public ThreadPool::getWorkerCount(): intGibt die Anzahl der Worker-Threads zurück, die im Pool gerade jetzt laufen. Sie beginnt beim $workers-Argument, das an new ThreadPool() übergeben wurde, und sinkt, sobald Worker beendet werden.
Rückgabewert
int — Anzahl der aktuell laufenden Worker-Threads. Ein Worker verlässt die Zählung, sobald sein Thread zurückkehrt; ein geschlossener Pool meldet daher 0, sobald alle seine Worker beendet sind, und ein Pool, der einen Thread verloren hat, meldet einen weniger, als er bei der Erstellung hatte.
Beispiele
Beispiel #1 Worker-Anzahl bestätigen
php
<?php
use Async\ThreadPool;
use function Async\spawn;
spawn(function() {
$pool = new ThreadPool(workers: 4);
echo $pool->getWorkerCount(), "\n"; // 4
$pool->close();
});Beispiel #2 Pool an verfügbare CPU-Kerne anpassen
php
<?php
use Async\ThreadPool;
use function Async\spawn;
use function Async\await;
spawn(function() {
$cores = (int) shell_exec('nproc') ?: 4;
$pool = new ThreadPool(workers: $cores);
echo "Pool erstellt mit ", $pool->getWorkerCount(), " Workern\n";
$futures = [];
for ($i = 0; $i < $cores * 2; $i++) {
$futures[] = $pool->submit(fn() => 'done');
}
foreach ($futures as $f) {
await($f);
}
$pool->close();
});Siehe auch
- ThreadPool::getPendingCount() — Aufgaben in der Warteschlange
- ThreadPool::getRunningCount() — Aktuell ausgeführte Aufgaben
- ThreadPool::getCompletedCount() — Insgesamt abgeschlossene Aufgaben
- Async\ThreadPool — Komponentenübersicht