Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Pthreads-线程不并行运行_Php_Pthreads_Wamp - Fatal编程技术网

PHP Pthreads-线程不并行运行

PHP Pthreads-线程不并行运行,php,pthreads,wamp,Php,Pthreads,Wamp,当我运行下面的代码时,各个线程似乎是按顺序执行的,一次执行一个线程。我期待着它们并行运行。我的代码有问题吗,还是应该开始检查我的环境?我在Windows机器上运行Apache、PHP7 <?php class Searcher extends Worker { public $data = []; public function addData($data) { $this->data[] = $data; } } class

当我运行下面的代码时,各个线程似乎是按顺序执行的,一次执行一个线程。我期待着它们并行运行。我的代码有问题吗,还是应该开始检查我的环境?我在Windows机器上运行Apache、PHP7

<?php
class Searcher extends Worker
{
    public $data = [];

    public function addData($data)
    {
        $this->data[] = $data;
    }
}




class MyThread extends Threaded
{
    public function __construct($param)
    {
        $this->param = $param;
    } 


    public function run()
    {
        sleep(3);
        $this->worker->addData(
            $this->param." - TIME: ".microtime(true)
        );
    }
}




$worker   = new Searcher();
$params = ['thread1', 'thread2', 'thread3', 'thread4', 'thread5', 'thread6', 'thread7'];

foreach ($params as &$param) {
    $worker->stack(new MyThread($param));
}

$worker->start();
$worker->join();

foreach ($worker->data as $data) {
    echo $data."<br/>";
}


?>
好的,我现在知道了

辅助线程并不是并行运行所有堆叠线程,而是一次执行一个线程


要同时运行所有作业,必须使用一个池。

线程的有趣之处在于,一旦它们分叉,您几乎无法控制它们运行的顺序。按顺序分叉的线程按顺序执行是很常见的。我不熟悉pthread,所以我不确定这些线程是如何分叉的——您的代码没有对pthread的调用或任何东西。您还可以确保分叉的线程多于处理器一次可以处理的线程。如果它有4个超线程内核,它可以一次处理8个。尝试分叉16个线程。
thread1 - TIME: 1512249412.3757 
thread2 - TIME: 1512249415.7776
thread3 - TIME: 1512249419.1792 
thread4 - TIME: 1512249422.5813
thread5 - TIME: 1512249425.9825 
thread6 - TIME: 1512249429.384
thread7 - TIME: 1512249432.7859