TaskGroup::__construct
(PHP 8.6+, True Async 1.0)
public TaskGroup::__construct(?int $concurrency = null, ?Async\Scope $scope = null)
Создаёт новую группу задач.
Параметры
- concurrency
- Максимальное количество одновременно работающих корутин.
null— без ограничений, все задачи запускаются сразу. При достижении лимита новые задачи помещаются в очередь и запускаются автоматически при освобождении слота. - scope
- Родительский scope. TaskGroup создаёт дочерний scope для своих корутин.
null— наследуется текущий scope.
Примеры
Пример #1 Без ограничений
<?php
use Async\TaskGroup;
$group = new TaskGroup();
$group->spawn(fn() => "задача 1"); // запускается сразу
$group->spawn(fn() => "задача 2"); // запускается сразу
$group->spawn(fn() => "задача 3"); // запускается сразу
Пример #2 С ограничением конкурентности
<?php
use Async\TaskGroup;
$group = new TaskGroup(concurrency: 2);
$group->spawn(fn() => "задача 1"); // запускается сразу
$group->spawn(fn() => "задача 2"); // запускается сразу
$group->spawn(fn() => "задача 3"); // ждёт в очереди
См. также
- TaskGroup::spawn — Добавить задачу
- Scope — Управление жизнью корутин