PHP pthreads:Thread :: start()是否会返回FALSE?

时间:2015-07-06 16:40:26

标签: php pthreads

我想知道是否有Thread::start()返回false的情况。 manual对此并不十分清楚。

在以下情况下我能够让start()失败。在所有情况下,它都会抛出RuntimeException,因此没有false返回。

  • 尝试开始两次

    $thread = new Thread;
    $thread->start();
    $thread->start(); // RuntimeException
    
  • 排放系统资源

    class TestThread extends Thread
    {
        public function run()
        {
            sleep(PHP_INT_MAX);
        }
    }
    $threads = [];
    for (;;) {
        $thread = new TestThread;
        if (!$thread->start()) { // RuntimeException eventually
            echo 'FALSE returned.', PHP_EOL; // never printed
            break;
        }
        $threads[] = $thread;
    }
    
  • 尝试从线程 再次启动线程(注意:您可以从线程启动线程;这只是一个让它失败的示例。)

    class TestThread extends Thread
    {
        public function run()
        {
            // necessary to see the exception
            set_exception_handler(function ($exception) {
                throw $exception;
            });
    
            self::start(); // RuntimeException
        }
    }
    (new TestThread)->start();
    

0 个答案:

没有答案