Сайт справки
  • Авторизация
  • Обратная связь
  • Теги
    • Joomla
      • JLoader
      • Mootools
      • Bootstrap
      • jQuery
      • jQuery UI
      • Конфликты JS
      • Joomla! Javascript Framework
      • JS Фреймворки
      • Ajax
      • JS
      • MVC
      • JoomShopping
      • Сессии
    • JS

Расширенный поиск
  • Главная
  • Разное
  • PHP
  • PHP-CPP
  • 22 Динамическая загрузка.
  • php
  • Многопоточность
  • pthreads
  • Volatile

(PECL pthreads >= 3.0.0)

Введение

Класс Volatile является новым для pthreads v3. Его введение является следствием новой семантики неизменяемости  членов Threaded классов Threaded. Класс Volatile обеспечивает изменчивость своих членов Threaded, а также используется для хранения массивов PHP в контекстах Threaded.

Обзор классов

class Volatile extends Threaded implements Collectable , Traversable {
	/* Наследуемые методы */
	public array Threaded::chunk ( int $size , bool $preserve )
	public int Threaded::count ( void )
	public bool Threaded::extend ( string $class )
	public Threaded Threaded::from ( Closure $run [, Closure $construct [, array $args ]] )
	public array Threaded::getTerminationInfo ( void )
	public bool Threaded::isRunning ( void )
	public bool Threaded::isTerminated ( void )
	public bool Threaded::isWaiting ( void )
	public bool Threaded::lock ( void )
	public bool Threaded::merge ( mixed $from [, bool $overwrite ] )
	public bool Threaded::notify ( void )
	public bool Threaded::notifyOne ( void )
	public bool Threaded::pop ( void )
	public void Threaded::run ( void )
	public mixed Threaded::shift ( void )
	public mixed Threaded::synchronized ( Closure $block [, mixed $... ] )
	public bool Threaded::unlock ( void )
	public bool Threaded::wait ([ int $timeout ] )
}

Примеры

Пример #1 Новая семантика неизменяемости Threaded

<?php

class Task extends Threaded
{
    public function __construct()
    {
        $this->data = new Threaded();

        // попытка перезаписать свойство Threaded класса Threaded (недопустимо)
        $this->data = new StdClass();
    }
}

var_dump((new Task())->data);

Результатом выполнения данного примера будет что-то подобное:

RuntimeException: потоковые элементы, ранее установленные в потоковые объекты, неизменяемы, не могут перезаписывать данные в %s:%d

Пример #2 Volatile использование регистра

<?php

class Task extends Volatile
{
    public function __construct()
    {
        $this->data = new Threaded();

        // попытка перезаписать  свойство Threaded  класса Volatile (допустимо)
        $this->data = new StdClass();
    }
}

var_dump((new Task())->data);

Результатом выполнения данного примера будет что-то подобное:

object(stdClass)#3 (0) {
}

  • 08 Лямбда-функции.
  • 16 Исключения.
  • 03 Ваше первое расширение.
  • 11 Наследование классов.
  • 19 Загрузка настроек из php.ini.
  • 14 Специальные функции.
  • 06 Параметры функции.
  • 09 Классы и объекты.
  • 17 Работа с переменными.
  • 20 Обратные вызовы расширения.
  • 04 Генерация выходных данных и ошибок.
  • 12 Магические методы.
  • 15 Свойства класса.
  • 07 Вызов функций.
  • 10 Конструкторы и деструкторы
  • 18 Глобальные константы и константы уровня класса.
  • 21 Пространство имен.
  • 01 Как установить PHP-CPP?
  • 02 Как PHP загружает свои расширения?
  • 05 Регистрация собственных функций
  • Карта сайта

Наверх

© Сайт справки 2025

Яндекс.Метрика