我目前看到的代码如下:
<?php
class workerThread extends Thread {
public function __construct($i) {
$this->i = $i;
}
public function run() {
echo $this->i . " ";
sleep(1);
echo $this->i . " ";
}
}
for ($i=1; $i<=5; $i++) {
$workers[$i]= new workerThread($i);
$workers[$i]->start();
}
?>
我期望这样做是回声1 2 3 4 5
,等待1秒,然后回显1 2 3 4 5
。但是,它会等待整个程序完成,然后吐出1 1 2 2 3 3 4 4 5 5
。由于某种原因,它不是异步行为。我做错了什么?
修改:使用usleep(1000000)
代替sleep(1)
答案 0 :(得分:0)
这是来自PHP API参考的复制粘贴:
执行run方法后,Thread将立即退出 将在适当的时候与创建线程连接。
我认为,引擎认为加入这些线程的适当时间是在下一次循环迭代时。