За последние 24 часа нас посетили 24297 программистов и 1661 робот. Сейчас ищут 867 программистов ...

PTHREADS

Тема в разделе "PHP для новичков", создана пользователем FerroDump, 11 мар 2017.

  1. FerroDump

    FerroDump Новичок

    С нами с:
    19 ноя 2016
    Сообщения:
    22
    Симпатии:
    0
    Подскажите, пожалуйста, почему так происходит и как вообще работать со статикой в pthreads тогда?
    PHP:
    1. class staticClass extends \Threaded{
    2.         public static $a; // Threaded
    3.         public static $b = "a";
    4.         public static $c = ["array"];
    5.         public static $d = [123, 321];
    6.     }
    7.  
    8.     staticClass::$a = new \Threaded;
    9.     staticClass::$a[] = "TEST";
    10.  
    11.     $th = (new class extends \Thread
    12.     {
    13.         function run()
    14.         {
    15.             $this->synchronized(
    16.                 function()
    17.                 {
    18.                     var_dump(staticClass::$a);
    19.                     var_dump(staticClass::$b);
    20.                     var_dump(staticClass::$c);
    21.                     var_dump(staticClass::$d);
    22.                     staticClass::$b = "b";
    23.                 }
    24.             );
    25.         }
    26.     });
    27.  
    28.     $th->start();
    29.  
    30.     sleep(2);
    31.     var_dump(staticClass::$b);
    сначала вывод в консоли такой:
    Код (Text):
    1. NULL
    2. string(1) "a"
    3. NULL
    4. NULL
    5. string(1) "a"
    как видно, сохраняется только string.

    но подождав минуту (скрипт перезапускается через bash каждую секунду), то в консоли начали появляться другие данные:
    Код (Text):
    1. NULL
    2. string(1) "a"
    3. array(1) {
    4.   [0]=>
    5.   string(5) "array"
    6. }
    7. array(2) {
    8.   [0]=>
    9.   int(123)
    10.   [1]=>
    11.   int(321)
    12. }
    первое свойство должно быть объектом Threaded, но почему-то это null

    и если что-то изменить в скрипте (например добавить пробел) и сохранить, то в консоли опять прежний дамп, и через минуту опять меняется...
    Код (Text):
    1. NULL
    2. string(1) "a"
    3. NULL
    4. NULL
    5. string(1) "a"
    что это вообще такое?
     
  2. abrdabr

    abrdabr Новичок

    С нами с:
    28 янв 2017
    Сообщения:
    774
    Симпатии:
    65
    @FerroDump ну сегодня бури на солнце поэтому моя телепатия слабовата...
    class staticClass extends \Threaded{
    что то мне подсказывает что я вижу не весь код