PHP
处理控制 | Process Control

Volatile (class)

The Volatile class

Introduction

(PECL pthreads >= 3.0.0)

The Volatile class is new to pthreads v3. Its introduction is a consequence of the new immutability semantics of Threaded members of Threaded classes. The Volatile class enables for mutability of its Threaded members, and is also used to store PHP arrays in Threaded contexts.

Class synopsis

Volatile extends Threaded implements Collectable , Traversable {

/* Inherited methods */

public array Threaded::chunk ( integer $size , boolean $preserve )

public integer 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 boolean Threaded::isRunning ( void )

public boolean Threaded::isTerminated ( void )

public boolean Threaded::isWaiting ( void )

public boolean Threaded::lock ( void )

public boolean Threaded::merge ( mixed $from [, bool $overwrite ] )

public boolean Threaded::notify ( void )

public boolean Threaded::notifyOne ( void )

public boolean Threaded::pop ( void )

public void Threaded::run ( void )

public mixed Threaded::shift ( void )

public mixed Threaded::synchronized ( Closure $block [, mixed $... ] )

public boolean Threaded::unlock ( void )

public boolean Threaded::wait ([ integer $timeout ] )

}

Examples

Example #1 New immutability semantics of Threaded

<?php class Task extends Threaded {     public function __construct()     {         $this->data = new Threaded(         // attempt to overwrite a Threaded property of a Threaded class (invalid)         $this->data = new StdClass(     } } var_dump((new Task())->data

The above example will output something similar to:

RuntimeException: Threaded members previously set to Threaded objects are immutable, cannot overwrite data in %s:%d

Example #2 Volatile use-case

<?php class Task extends Volatile {     public function __construct()     {         $this->data = new Threaded(         // attempt to overwrite a Threaded property of a Volatile class (valid)         $this->data = new StdClass(     } } var_dump((new Task())->data

The above example will output something similar to:

object(stdClass)#3 (0) { }

← Cond::wait

Semaphore →

© 1997–2017 The PHP Documentation Group

Licensed under the Creative Commons Attribution License v3.0 or later.

https://secure.php.net/manual/en/class.volatile.php