*/ function enqueue(Task $task): Promise { $pool = pool(); if (!$pool->isRunning()) { $pool->start(); } return $pool->enqueue($task); } /** * Creates a worker using the global worker factory. * * @return \Amp\Parallel\Worker\Worker */ function create(): Worker { $worker = factory()->create(); $worker->start(); return $worker; } /** * Gets or sets the global worker factory. * * @param \Amp\Parallel\Worker\WorkerFactory|null $factory * * @return \Amp\Parallel\Worker\WorkerFactory */ function factory(WorkerFactory $factory = null): WorkerFactory { if ($factory === null) { $factory = Loop::getState(LOOP_FACTORY_IDENTIFIER); if ($factory) { return $factory; } $factory = new DefaultWorkerFactory; } Loop::setState(LOOP_FACTORY_IDENTIFIER, $factory); return $factory; } /** * Gets a worker from the global worker pool. * * @return \Amp\Parallel\Worker\Worker */ function get(): Worker { $pool = pool(); if (!$pool->isRunning()) { $pool->start(); } return $pool->get(); }