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 — 컴포넌트 개요