mirror of
https://github.com/php/doc-es.git
synced 2026-03-24 07:22:16 +01:00
176 lines
7.8 KiB
XML
176 lines
7.8 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision$ -->
|
|
<!-- EN-Revision: bf92d8bd839301de7c837d20ab1dac6c14f83bbf Maintainer: PhilDaiguille Status: ready -->
|
|
<!-- Reviewed: no -->
|
|
<book xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="book.pthreads">
|
|
<?phpdoc extension-membership="pecl" ?>
|
|
<title>pthreads</title>
|
|
<titleabbrev>pthreads</titleabbrev>
|
|
|
|
<preface xml:id="intro.pthreads">
|
|
&reftitle.intro;
|
|
<simpara>
|
|
pthreads es una API orientada a objetos que aporta todas las herramientas necesarias para
|
|
el multithreading en PHP.
|
|
Las aplicaciones PHP pueden crear, leer, escribir, ejecutar
|
|
y sincronizar Threads, Workers, y objetos Threaded.
|
|
</simpara>
|
|
<warning>
|
|
<simpara>
|
|
Esta extensión es considerada no mantenida y obsoleta.
|
|
</simpara>
|
|
</warning>
|
|
<tip>
|
|
<simpara>
|
|
Considerar el uso de <link linkend="book.parallel">parallel</link> en su lugar.
|
|
</simpara>
|
|
</tip>
|
|
<warning>
|
|
<simpara>
|
|
La extensión pthreads no puede ser utilizada en un entorno de
|
|
servidor Web. El threading en PHP se limita por tanto a aplicaciones basadas
|
|
en CLI únicamente.
|
|
</simpara>
|
|
</warning>
|
|
<warning>
|
|
<simpara>
|
|
pthreads (v3) puede ser utilizado únicamente con PHP 7.2+ debido a un
|
|
modo ZTS peligroso en PHP 7.0 y 7.1.
|
|
</simpara>
|
|
</warning>
|
|
<simpara>
|
|
La clase <classname>Threaded</classname> constituye la base de la
|
|
funcionalidad que permite a pthreads funcionar. Expone los métodos
|
|
de sincronización y algunas interfaces útiles para el programador.
|
|
</simpara>
|
|
<simpara>
|
|
La clase <classname>Thread</classname> permite crear threads extendiéndola simplemente e
|
|
implementando un método <literal>run</literal>. Todos los miembros pueden ser escritos y leídos
|
|
por cualquier contexto con una referencia al thread. Todo contexto puede igualmente ejecutar
|
|
todos los métodos públicos y protegidos. El cuerpo del método run será ejecutado
|
|
en un thread separado cuando el método <methodname>Thread::start</methodname>
|
|
de la implementación sea llamado desde el contexto que lo creó. Solo el
|
|
contexto que crea un thread puede iniciarlo y unirse a él.
|
|
</simpara>
|
|
<simpara>
|
|
La clase <classname>Worker</classname> tiene un estado persistente y estará
|
|
disponible desde la llamada a <methodname>Thread::start</methodname> (un método heredado)
|
|
hasta que el objeto esté fuera de alcance, o sea explícitamente detenido (vía
|
|
<methodname>Worker::shutdown</methodname>). Todo contexto con una referencia al objeto Worker
|
|
puede apilar tareas en el Worker (vía <methodname>Worker::stack</methodname>), donde estas
|
|
tareas serán ejecutadas por el Worker en un thread separado. El método
|
|
<literal>run</literal> de un objeto worker es ejecutado antes de cualquier objeto de la pila del worker,
|
|
lo que permite que los recursos sean inicializados para que los objetos a ejecutar puedan usarlos.
|
|
</simpara>
|
|
<simpara>
|
|
La clase <classname>Pool</classname> se utiliza para crear un grupo de
|
|
workers para distribuir objetos <classname>Threaded</classname> entre ellos.
|
|
Es el medio más fácil y eficiente de utilizar múltiples threads en aplicaciones PHP.
|
|
</simpara>
|
|
<caution>
|
|
<simpara>
|
|
La clase <classname>Pool</classname> no extiende la clase
|
|
<classname>Threaded</classname>, y por tanto los objetos basados en pool son
|
|
considerados como objetos PHP normales. En consecuencia, sus instancias no
|
|
deben ser compartidas entre contextos diferentes.
|
|
</simpara>
|
|
</caution>
|
|
<simpara>
|
|
La clase <classname>Volatile</classname> es nueva para pthreads v3.
|
|
Se utiliza para designar las propiedades <classname>Threaded</classname> mutables
|
|
de las clases <classname>Threaded</classname> (ya que estas son ahora inmutables por defecto).
|
|
También se utiliza para almacenar arrays PHP en contextos <classname>Threaded</classname>.
|
|
</simpara>
|
|
<simpara>
|
|
La sincronización es una capacidad importante al realizar threading. Todos los
|
|
objetos creados por pthreads han sido construidos con sincronización en la forma
|
|
(que será familiar a los programadores Java) de
|
|
<methodname>Threaded::wait</methodname> y
|
|
<methodname>Threaded::notify</methodname>. La llamada a
|
|
<methodname>Threaded::wait</methodname> sobre un objeto hará que el contexto
|
|
espere a que otro contexto llame a
|
|
<methodname>Threaded::notify</methodname> sobre el mismo objeto. Este mecanismo
|
|
permite una sincronización poderosa entre los objetos
|
|
<classname>Threaded</classname> en PHP.
|
|
</simpara>
|
|
<caution>
|
|
<simpara>
|
|
Todo objeto previsto para ser utilizado en una parte multithread de la aplicación
|
|
debe extender <classname>Threaded</classname>.
|
|
</simpara>
|
|
</caution>
|
|
<simpara>
|
|
Almacenamiento de datos: En regla general, todos los tipos de datos que puedan ser serializados pueden
|
|
ser utilizados como miembro de un objeto Threaded, pueden ser leídos y escritos desde cualquier
|
|
contexto con una referencia al objeto Threaded. No todos los tipos de datos son almacenados
|
|
después de la serialización; los tipos simples son almacenados en su forma inicial. Los tipos
|
|
complejos, los arrays y los objetos que no son Threaded, son almacenados serializados; pueden ser
|
|
leídos y escritos en el objeto Threaded desde cualquier contexto con una referencia.
|
|
A excepción de los objetos Threaded, toda referencia utilizada para definir un miembro de un objeto
|
|
Threaded es separada de la referencia en el objeto Threaded; los mismos datos pueden ser leídos
|
|
directamente desde el objeto Threaded en cualquier momento por cualquier contexto con una referencia
|
|
al objeto Threaded.
|
|
</simpara>
|
|
<simpara>
|
|
Miembros estáticos: Cuando un nuevo contexto es creado (Thread o Worker),
|
|
generalmente son copiados, pero los recursos y objetos con estado interno son nullificados
|
|
(por razones de seguridad). Esto permite a la función una especie de almacenamiento local
|
|
a nivel de thread. Por ejemplo, al iniciar el contexto, una clase cuyos miembros estáticos
|
|
incluyen información de conexión a un servidor de base de datos, solo la información
|
|
será copiada, y no la conexión en sí. Esto permite al nuevo contexto inicializar
|
|
una conexión de la misma forma que el contexto que lo creó, almacenando la conexión
|
|
en el mismo lugar sin afectar al contexto original.
|
|
</simpara>
|
|
<caution>
|
|
<simpara>
|
|
Cuando print_r, var_dump y otras funciones de depuración son ejecutadas, no incluyen
|
|
protección contra la recursión.
|
|
</simpara>
|
|
</caution>
|
|
<note>
|
|
<simpara>
|
|
Recursos: Las extensiones y funcionalidades que definen recursos en PHP no están preparadas
|
|
para este tipo de entorno; pthreads toma disposiciones en materia de recursos a compartir entre
|
|
los contextos, sin embargo, para la mayoría de los recursos, deberán ser considerados como peligrosos.
|
|
Un cuidado y una extrema precaución deberán ser de aplicación para compartir recursos entre los contextos.
|
|
</simpara>
|
|
</note>
|
|
<caution>
|
|
<simpara>
|
|
En el entorno de ejecución de pthreads, restricciones y limitaciones son necesarias para
|
|
proporcionar un entorno estable.
|
|
</simpara>
|
|
</caution>
|
|
</preface>
|
|
|
|
&reference.pthreads.setup;
|
|
&reference.pthreads.constants;
|
|
&reference.pthreads.threaded;
|
|
&reference.pthreads.thread;
|
|
&reference.pthreads.worker;
|
|
&reference.pthreads.collectable;
|
|
&reference.pthreads.pool;
|
|
&reference.pthreads.volatile;
|
|
|
|
</book>
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
indent-tabs-mode:nil
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
vim: et tw=78 syn=sgml
|
|
vi: ts=1 sw=1
|
|
-->
|