我正在尝试找出在PHP中使用pthreads的最佳方法,也许我没有找到合适的位置。我写了一个脚本,并摘自https://www.sitepoint.com/parallel-programming-pthreads-php-fundamentals/
当我实现它时,一切看起来都很正常,但是当我真正提高睡眠时间并增加迭代次数时,我似乎在运行此脚本时正在使用一个处理器的100%,而不是分配可用的处理器。有时,负载会切换到另一个处理器,但是它基本上会停止在一个处理器上运行,并继续100%在另一个处理器上运行。这是预期的功能,还是我在7.2.10中编译了pthreads错误?下面的代码和屏幕截图:
<?php
class Task extends Threaded{
private $value;
public function __construct(int $i){
$this->value = $i;
}
public function run(){
// Just to get longer running execution on
// odd numbers
if($this->value % 2 == 0){
$t = rand(250000, 1000000);
} else {
$t = rand(250000, 10000000);
}
usleep($t);
echo "Task:{$this->value}\t($t)\n";
}
}
$pool = new Pool(8);
for ($i = 0; $i < 1024; ++$i) {
$pool->submit(new Task($i));
}
while ($pool->collect());
$pool->shutdown();
我做错什么了吗?还是对php的pthreads有意义?