畫江湖之 PHP 多執行緒開發 【建立一個新的執行緒】

Krisji發表於2019-04-05
<?php

// 繼承 Thread 的類具有建立執行緒的能力
class Request extends Thread
{
    public $str;

    public $i;

    public function __construct($i)
    {
        $this->i = $i;
    }

    public function run()//覆蓋重寫run 方法 執行執行緒任務
    {
        if ($this->i == 3) {//如果執行緒是第三個的時候
            sleep(5);//延遲5秒
        } else {
            sleep(1);
        }
        $this->str = $this->i;
    }
}

$arr = [];
//同時建立3個執行緒
for ($i = 0; $i <= 3; $i++) {
    $request = new Request($i);
    $arr[$i] = $request;
    // 建立新執行緒,隨後執行緒會執行 run 方法
    if (! $request->start()) {
        die("Start thread failed\n");
    }
    echo "Thread({$i}) started\n";
}

for ($i = 0; $i <= 3; $i++) {
    // join 是阻塞的,所以指令碼執行時間取決於耗時最長的執行緒
    if (! $arr[$i]->join()) {
        die("Join failed\n");
    }
    echo $arr[$i]->str . PHP_EOL;
}

相關文章