(PECL pthreads >= 3.0.0)
La clase Volatile es nueva en pthreads v3. Su introducción es una consecuencia de las nuevas semánticas de inmutabilidad de los miembros Threaded de las clases Threaded. La clase Volatile permite la mutabilidad de sus miembros Threaded, y es igualmente utilizada para almacenar arrays PHP en contextos Threaded.
Ejemplo #1 Nuevas semánticas de inmutabilidad de Threaded
<?php
class Task extends Threaded
{
public function __construct()
{
$this->data = new Threaded();
// intenta reemplazar una propiedad Threaded de una clase Threaded (inválido)
$this->data = new stdClass();
}
}
var_dump((new Task())->data);
El resultado del ejemplo sería algo similar a:
RuntimeException: Threaded members previously set to Threaded objects are immutable, cannot overwrite data in %s:%d
Ejemplo #2 Caso de uso de Volatile
<?php
class Task extends Volatile
{
public function __construct()
{
$this->data = new Threaded();
// intenta reemplazar una propiedad Threaded de una clase Volatile (válido)
$this->data = new stdClass();
}
}
var_dump((new Task())->data);
El resultado del ejemplo sería algo similar a:
object(stdClass)#3 (0) { }