Pool::submitTo

(PECL pthreads >= 2.0.0)

Pool::submitTo提交一个任务到特定的 Worker 以执行

说明

public Pool::submitTo ( int $worker , Threaded $task ) : int

将对象提交到 Pool 中某个特定的 Worker 对象来执行。Worker 的下标从 0 开始, 由于 Pool 中的线程是懒加载机制, 所以 Worker 对象仅在 Pool 需要执行任务的时候才会真正被创建。

参数

worker

用来执行任务的 Worker 对象,下标从 0 开始。

task

要执行的任务

返回值

接受新加入对象的 Worker 对象ID

范例

Example #1 提交任务到特定的 Worker

<?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()); // 将所有的任务都入栈到下标为 0 的 Worker
}

$pool->submitTo(1, new Task()); // 由于第二个 Worker 尚未存在,所以不可以将任务入栈到第二个 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

关注编程学问公众号