1
<?php

class Timer {
    static private  $s;
    function __construct()
    {
        self::$s = self::getmicrotime();
    }

    static public  function Start()
    {
        self::$s = self::getmicrotime();
    }

    static public function Fetch($decimalPlaces = 6)
    {
        return number_format((self::getmicrotime() - self::$s), $decimalPlaces);
    }
    static public function getmicrotime()
    {
        return array_sum(explode(' ', microtime()));
    }

}

class T extends Thread {
    public function run() {
        test();
    }
}


function test()
{
    $n = 0;
    for($i=1;$i<9999999;$i++)
    {
        $n+=$i;
    }
    echo '#';
}


//+++++++++++++++++++++++START DEMO ++++++++++++++++++++++++++
    Timer::Start(); 

    //DEMO1,TIME:3.679208 second(s). 

    $ts = array();
    while (count($ts)<10) {
        $t = new T();
        $t->start();
        $ts[]=$t;
    }
    $ts = array(); 

    //DEMO2,TIME:6.876037 second(s). 
    /* for($k=0;$k<10;$k++)
    {
        $t = new T();
        $t->start();
    } */


    echo '<br />Processed in '.Timer::Fetch().' second(s).'; 
?>

我正在阅读关于 pthreads 主题的http://pthreads.org/并且我有这个问题,我想测试 php 多线程,但是当我使用 for 创建多线程时,这不是我想要的结果。

事实上,DEMO1 是正确的。

但是为什么第二个DEMO elapsed_time 6.876037 second 呢?

DEMO2 为什么不能用 for 创建多线程?

4

0 回答 0