1
0
mirror of https://github.com/php/doc-es.git synced 2026-03-24 07:22:16 +01:00
Files

134 lines
5.8 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: no -->
<book xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude" xml:id="book.parallel">
<?phpdoc extension-membership="pecl" ?>
<title>parallel</title>
<titleabbrev>parallel</titleabbrev>
<preface xml:id="intro.parallel">
&reftitle.intro;
<simpara>
parallel es una extensión de concurrencia paralela para PHP ≥ 7.2.0.
A partir de parallel 1.2.0, PHP ≥ 8.0.0 es requerido.
</simpara>
<simpara>
A continuación se presenta una breve descripción de los conceptos básicos de parallel, se puede encontrar información más detallada en esta sección del manual.
</simpara>
<simplesect>
<title>Ejecución</title>
<simpara>
Un <classname>parallel\Runtime</classname> representa un hilo de intérprete PHP. Un <classname>parallel\Runtime</classname> se configura con un fichero de arranque opcional pasado a <methodname>parallel\Runtime::__construct</methodname>, generalmente un cargador automático,
o alguna otra rutina de precarga: el fichero de arranque será incluido antes de la ejecución de cualquier tarea.
</simpara>
<simpara>
Después de la construcción, el <classname>parallel\Runtime</classname> permanece disponible hasta que se cierre, se mate, o se destruya por las reglas de ámbito normales de los objetos PHP.
<methodname>parallel\Runtime::run</methodname> permite al desarrollador programar tareas para una ejecución paralela.
Un <classname>parallel\Runtime</classname> tiene un orden de programación FIFO, las tareas se ejecutarán en el orden en que se programen.
</simpara>
</simplesect>
<simplesect>
<title>API Funcional</title>
<simpara>
Parallel implementa una API funcional, de alto nivel sobre <classname>parallel\Runtime</classname> que proporciona un único punto de entrada para ejecutar código paralelo
con una programación automática: <function>parallel\run</function>.
</simpara>
</simplesect>
<simplesect>
<title>Tareas</title>
<para>
Una tarea (Task) es simplemente una <classname>Closure</classname> destinada a una ejecución paralela. La <classname>Closure</classname> puede contener casi cualquier instrucción, incluyendo cierres anidados.
Sin embargo, algunas instrucciones están prohibidas en las tareas:
<itemizedlist>
<listitem>
<simpara>yield</simpara>
</listitem>
<listitem>
<simpara>use by-reference</simpara>
</listitem>
<listitem>
<simpara>declare class</simpara>
</listitem>
<listitem>
<simpara>declare named function</simpara>
</listitem>
</itemizedlist>
</para>
<note>
<simpara>
Los cierres anidados pueden usar yield o use by-reference, pero no deben contener declaraciones de clase o funciones nombradas.
</simpara>
</note>
<note>
<simpara>
Ninguna instrucción está prohibida en los ficheros que la tarea puede incluir.
</simpara>
</note>
</simplesect>
<simplesect>
<title>Future</title>
<simpara>
El <classname>parallel\Future</classname> se utiliza para acceder al valor de retorno de la tarea, y expone una API para la cancelación de la tarea.
</simpara>
</simplesect>
<simplesect>
<title>Canales</title>
<simpara>
Una tarea puede ser programada con argumentos, usar variables de ámbito léxico (por valor), y devolver un valor (a través de un <classname>parallel\Future</classname>), pero estos solo permiten la comunicación unidireccional:
Permiten al desarrollador enviar datos a una tarea y recuperar datos de una tarea, pero no permiten la comunicación bidireccional entre las tareas. La API <classname>parallel\Channel</classname> permite la comunicación bidireccional entre las tareas, un <classname>parallel\Channel</classname> es un enlace de tipo socket entre las tareas que el desarrollador puede usar para enviar y recibir datos.
</simpara>
</simplesect>
<simplesect>
<title>Eventos</title>
<simpara>
La API <classname>parallel\Events</classname> implementa un bucle de eventos (<classname>Traversable</classname>) nativo, y el método <methodname>parallel\Events::poll</methodname>.
Esto permite al desarrollador trabajar con conjuntos de canales y/o futuros.
El desarrollador simplemente añade canales y futuros al bucle de eventos, definiendo opcionalmente la entrada para las escrituras con <methodname>parallel\Events::setInput</methodname>,
y entra en un bucle foreach: parallel leerá y escribirá en los objetos a medida que se vuelvan disponibles, devolviendo objetos <classname>parallel\Events\Event</classname>
describiendo las operaciones que han ocurrido.
</simpara>
</simplesect>
<simplesect role="seealso">
&reftitle.seealso;
<simplelist>
<member><xref linkend="philosophy.parallel"/></member>
</simplelist>
</simplesect>
</preface>
&reference.parallel.setup;
&reference.parallel.philosophy;
&reference.parallel.functional;
&reference.parallel.parallel.runtime;
&reference.parallel.parallel.future;
&reference.parallel.parallel.channel;
&reference.parallel.parallel.events;
&reference.parallel.parallel.events.input;
&reference.parallel.parallel.events.event;
&reference.parallel.parallel.events.event.type;
&reference.parallel.parallel.sync;
<!--&reference.parallel.examples;-->
</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
-->