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

Расширенный поиск
  • Главная
  • Разное
  • Netbeans
  • 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) {
}

  • Карта сайта

Наверх

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

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