Как запретить делать копию массива для потока

0

Я использую pthreads в php. У меня есть два потока для работы с массивом, который содержит соединения пользователей. Когда начинается второй поток, он делает копию этого массива для себя. После изменения этого массива основным потоком второй поток не имеет новых элементов. Как запретить делать копию этого массива для потоков?

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);
        }

    }
}

PS Извините за мой английский - это не мой родной язык.

Теги:
arrays
multithreading
concurrency
pthreads

1 ответ

0
Лучший ответ

Может быть, вы должны попытаться использовать для этого методы синхронизации? Я не знаю вас, но вы можете попробовать, например, заблокировать или даже использовать рабочих и пулов для этой проблемы. Также вы можете создать специальный класс для хранения данных, унаследованных от Stackable, которые будут заботиться о безопасности данных.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню