php pthreads:将对象传递给父对象

时间:2018-11-14 05:55:03

标签: php object scope pthreads

我注意到我无法在父线程的子线程中使用创建的对象。

比方说,在扩展“线程”的类的同步函数中,我创建了一个对象和一个属性:

$this->hit = true;
$this->synchronized
(
    function () 
    {
        $this->obj = new stdClass;
        $this->obj->result = "you have a result in an object.";
        $this->result = "you have a result in a property."
        $this->wait();
        $this->hit = false;
    }
);

...然后我尝试在父线程的同步函数的另一端获取它:

if ($job->hit)
{
    $job->synchronized
    (
        function ($job) 
        {
            $job->notify();
            echo $job->obj->result . "^^^Getting object created in child thread doesn't work for some reasons^^^.\n\n";
            echo $job->result . ", and that's ok.\n";
        }, 
        $job
    );
}

以下内容会抱怨:

  

PHP注意:尝试获取非对象的属性   第71行的/srv/cordmon/src/SleepThread.php   ^^^由于某些原因,无法在子线程中创建对象^^^。

     

您在一个属性中有一个结果,没关系。

我进行了几次尝试,为简洁起见,在此不再列出,但是似乎无法从我的子线程中将对象移到父线程中。其他数据类型不会出现此问题,因此我想我可以在实际使用中从数组中获得所需的信息。

仍然,我想知道为什么会这样,以及是否有正确的方法来做我要尝试的事情。我知道线程不在主作用域内,并且我知道匿名函数也有其自己的作用域,但是我认为必须有一种方法(例如,使用json_encode / _decode或类似的解决方法除外)。

谢谢。

0 个答案:

没有答案
相关问题