这是示例代码,我正在
上工作class workerThread extends Thread {
public function __construct($i){
$this->i=$i;
}
public function run(){
while(true){
echo $this->i;
sleep(1);
}
}
}
for($i=0;$i<50;$i++){
$workers[$i]=new workerThread($i);
$workers[$i]->start();
}
从run()获取返回值的适当方法是什么,或者应该为回调创建另一个函数?
答案 0 :(得分:1)
所以在你的初始循环之后,你应该再做一个循环,等待每个工人完成。有thread->join
函数可以将主线程与子线程同步。导致停止执行并等待子线程完成。所以,如果你打电话给if($worker->join()) {...}
,你可以肯定,工人已经完成了工作:)
http://php.net/manual/de/thread.join.php
第二,线程不返回值。而是在类中创建一个变量,例如result
,并在线程运行期间用数据填充它。最后收集(join
之后)$worker->result
第三,你当前的线程甚至无法报告任何结果,因为它们永远运行。从我不明白的问题,如果你想让它们永远运行?因为如果你这样做,会有更复杂的步骤来持续获得结果。