почему результат не 2000? - PullRequest
0 голосов
/ 30 марта 2020
  1. подскажите, как использовать Threaded :: synchronized в php, пожалуйста, спасибо
  2. подскажите, почему результат не 2000

Я использую расширение pthreads в php для создания многопоточности, но я столкнулся с проблемой, я не знаю, как работает Threaded :: synchronized, я гуглил, но мне не удалось, информация о php pthreads слишком мало, поэтому, пожалуйста, кто-нибудь может сказать мне причину? спасибо очень очень очень большое !!!

<?php
//for variable sharing
class obj extends Threaded {
    public $counter;
}
//the class for multi threads
class workerman extends Thread {
    public $obj;

    public function __construct(obj $obj) {
        $this->obj = $obj;
    }

    public function run() {
        for ($ii = 0; $ii < 1000; $ii ++) {
            $this->synchronized(function($thread){
                $thread->obj->counter++;
            }, $this);
        }

    }
}

$obj = new obj();
//start two thread
$a = new workerman($obj);
$b = new workerman($obj);
$a->start();
$b->start();
$a->join();
$b->join();


var_dump($obj->counter);exit();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...