ThreadPool::isClosed()
(PHP 8.6+, True Async 1.0)
php
public ThreadPool::isClosed(): bool如果池已通过 close() 或 cancel() 关闭,则返回 true。如果池仍在接受任务,则返回 false。
返回值
bool — 如果池已关闭则为 true;如果仍处于活跃状态则为 false。
示例
示例 #1 提交前检查状态
php
<?php
use Async\ThreadPool;
use function Async\spawn;
use function Async\await;
spawn(function() {
$pool = new ThreadPool(workers: 2);
$future = $pool->submit(fn() => 'done');
var_dump($pool->isClosed()); // bool(false)
$pool->close();
var_dump($pool->isClosed()); // bool(true)
echo await($future), "\n"; // done
});示例 #2 在共享上下文中保护 submit
php
<?php
use Async\ThreadPool;
use function Async\spawn;
use function Async\await;
function trySubmit(ThreadPool $pool, callable $task): mixed
{
if ($pool->isClosed()) {
return null;
}
return await($pool->submit($task));
}
spawn(function() {
$pool = new ThreadPool(workers: 2);
echo trySubmit($pool, fn() => 'hello'), "\n"; // hello
$pool->close();
var_dump(trySubmit($pool, fn() => 'missed')); // NULL
});参见
- ThreadPool::close() — 优雅关闭
- ThreadPool::cancel() — 强制关闭
- Async\ThreadPool — 组件概述