如何禁止为线程制作数组副本

时间:2014-11-21 17:05:06

标签: php arrays multithreading concurrency pthreads

我在php中使用pthreads。我有两个线程用于包含用户连接的数组。当第二个线程启动时,它会为自己制作一个这个数组的副本。通过主线程修改此数组后,第二个线程没有新元素。如何禁止为线程制作这个数组的副本?

class AsyncClass extends Thread
{
    private $_message = null;
    private $_timeout = 0;
    private $connected_users;

    public function __construct($message, $timeout, $connected_users)
    {
        $this->_message = $message;
        $this->_timeout = $timeout;
        $this->connected_users = $connected_users;
    }

    public function run()
    {
        while(true){
            var_export($this->connected_users); // NULL, because is no connected users
            sleep($this->_timeout);
        }

    }
}

P.S。对不起我的英语 - 这不是我的母语。

1 个答案:

答案 0 :(得分:0)

可能你应该尝试使用同步方法吗?我不了解您的任务,但您可以尝试lock或甚至使用workerspools来解决此问题。您还可以创建用于存储数据的特殊类,继承自Stackable,这将关注数据安全。