(PECL pthreads >= 2.0.0)
Pool::submitTo — 将任务提交给特定工作线程以执行
将任务提交到池中指定的 worker。worker 从 0 开始索引,只有在池需要创建它们时才会存在(因为线程是延迟生成的)。
worker
要将任务添加到其队列的工作线程,索引从 0
开始。
task
要执行的任务。
接受任务的工作线程的标识符。
示例 #1 将任务提交给特定工作线程
<?php
class Task extends Threaded {
public function run() {
var_dump(Thread::getCurrentThreadID());
}
}
$pool = new Pool(2);
$pool->submit(new Task());
for ($i = 0; $i < 5; ++$i) {
$pool->submitTo(0, new Task()); // 将所有任务添加到第一个 worker
}
$pool->submitTo(1, new Task()); // 由于第二个 worker 还不存在,因此无法将任务添加到其队列
$pool->shutdown();
以上示例将输出
int(4475011072) int(4475011072) int(4475011072) int(4475011072) int(4475011072) int(4475011072) Fatal error: Uncaught Exception: The selected worker (1) does not exist in %s:%d