Рубрики
Uncategorized

<код возврата>УСПЕХ возврата>OK Подробное объяснение примеров операций обработки сигналов во введении PHP и пример изменчивости в PHP pthreads V3 возврата>OK Подробное объяснение примеров операций обработки сигналов во введении PHP и пример изменчивости в PHP pthreads V3

Автор оригинала: David Wong.

В этой статье описывается введение и использование volatile в PHP threads v3 . Подробности заключаются в следующем:

Поскольку концепция автоматической инвариантности объекта с потоками введена в pt threads V3, когда мы задаем элемент в виде массива в конструкторе, мы не можем переписать элемент в других местах.

Примерами являются следующие:

php

//Ptthreads V3 introduces the concept of automatic invariance of threaded objects
//If a member is set to a threaded object, it cannot be rewritten again
//Of course, this is mainly for performance optimization, but sometimes we need to rewrite members, so we need to inherit from the volatile class
class Task extends Thread
{
  private $data;
  private $result;

  public function __construct()
  {
    $this->data = 'abc';
    var_dump($this->data);

    //If the member is set to scalar, it can be rewritten again
    $this->data = 'def';
    var_dump($this->data);

    //Here, when data is set as an array, it will be automatically converted to a volatile object
    $this->data = [1, 2, 3];
    var_dump($this->data);

    //At this time, when you assign a value to data, an error will be reported
    //When a member is set as a threaded object (volatile inherits from threaded), the member cannot be overridden again
    $this->data = [4, 5, 6];
    var_dump($this->data);

    //Of course, we can explicitly cast to prevent threaded from automatically converting to a volatile object
    $this->result = (array)[1, 2, 3];
    //It prints out as an array
    var_dump($this->result);
    $this->result = (array)[4, 5, 6];
    //Member assignment succeeded
    var_dump($this->result);
  }
}

new Task();

Если мы перепишем участников снова, мы сообщим об ошибке.

Если вам действительно нужно переписать данные участника, в дополнение к явному приведению выше, другой способ – наследовать класс volatile.

Примерами являются следующие:

Volatile
{
  private $data;

  public function __construct()
  {
    //After inheriting from the volatile class, our members can still be rewritten after being set as threaded objects
    $this->data = [
      'a' => 123,
      'b' => 456,
      'c' => 789,
    ];
    var_dump($this->data);

    //Here, the member data is successfully rewritten
    $this->data = [
      'a' => 'aaa',
      'b' => 'bbb',
      'c' => 'ccc',
    ];
    var_dump($this->data);

    //Because the threaded object implements the arrayaccess interface, we can access the volatile object just like an array
    echo $this->data['a'], "\t", $this->data['b'], "\t", $this->data['c'], "\n";

    foreach ($this->data as $item) {
      echo $item, "\n";
    }
  }
}

new Task();

Результаты заключаются в следующем

Для получения дополнительной информации о PHP читатели, интересующиеся этим сайтом, могут ознакомиться со следующими темами: краткое описание навыков работы с процессами и потоками PHP, краткое описание навыков сетевого программирования PHP, вводный курс базового синтаксиса PHP, полная коллекция навыков работы с массивами PHP, краткое описание использования строк PHP “Руководство по работе с базой данных PHP + MySQL” и “Краткое описание навыков работы с общей базой данных PHP”.

Я надеюсь, что эта статья будет полезна для программирования на PHP.