多线程中join方法的含义

1、作用:调用这个方法的时候,主进程会在这里停住,等待该线程进行完毕再继续往下执行。

如:不使用join的情况:

<?php

class Join extends Thread
{
    public function run()
    {
        sleep(3);
        echo __FUNCTION__ . PHP_EOL;
    }
}

$join = new Join();
$join->start();

echo 'just a test' . PHP_EOL;

 输出:

just a test
run

 使用join:

<?php

class Join extends Thread
{
    public function run()
    {
        sleep(3);
        echo __FUNCTION__ . PHP_EOL;
    }
}

$join = new Join();
$join->start();
$join->join();

echo 'just a test' . PHP_EOL;

  输出:

run
just a test

  我们可以发现,使用join的时候,最后的echo语句需要等待线程运行完毕再运行。

 

2、为什么要join?

想想这样一种情况,线程执行时间过长,而且在要在后续代码中使用线程运行结果,

这样我们就可以使用join,防止主线程比子线程先结束,或者后续代码在线程结束之前就运行了从而获取不到线程处理结果。

 

3、使用join会导致进程阻塞,这个阻塞并不是目的,只是表现。并不是为了阻塞线程而使用join。

 

4、fork/join

 

posted @ 2017-09-14 17:06  佚名000  阅读(1579)  评论(0编辑  收藏  举报