Pool::submitTo

(PECL pthreads >= 2.0.0)

Pool::submitTo提交一個(gè)任務(wù)到特定的 Worker 以執(zhí)行

說(shuō)明

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

將對(duì)象提交到 Pool 中某個(gè)特定的 Worker 對(duì)象來(lái)執(zhí)行。Worker 的下標(biāo)從 0 開(kāi)始, 由于 Pool 中的線程是懶加載機(jī)制, 所以 Worker 對(duì)象僅在 Pool 需要執(zhí)行任務(wù)的時(shí)候才會(huì)真正被創(chuàng)建。

參數(shù)

worker

用來(lái)執(zhí)行任務(wù)的 Worker 對(duì)象,下標(biāo)從 0 開(kāi)始。

task

要執(zhí)行的任務(wù)

返回值

接受新加入對(duì)象的 Worker 對(duì)象ID

范例

示例 #1 提交任務(wù)到特定的 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()); // 將所有的任務(wù)都入棧到下標(biāo)為 0 的 Worker
}

$pool->submitTo(1, new Task()); // 由于第二個(gè) Worker 尚未存在,所以不可以將任務(wù)入棧到第二個(gè) Worker

$pool->shutdown();

以上例程會(huì)輸出:

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