mirror of
https://github.com/php/doc-es.git
synced 2026-03-24 07:22:16 +01:00
134 lines
5.8 KiB
XML
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
|
|
-->
|