Files
doc-fr/reference/parallel/book.xml
2024-08-25 16:58:29 +01:00

136 lines
6.0 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: bbfa9738785f054752e6cb565cd0a58e71015bc6 Maintainer: Fan2Shrek Status: ready -->
<!-- Reviewed: yes -->
<book xml:id="book.parallel" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
<?phpdoc extension-membership="pecl" ?>
<title>parallel</title>
<titleabbrev>parallel</titleabbrev>
<preface xml:id="intro.parallel">
&reftitle.intro;
<para>
parallel est une extension de concurrence parallèle pour PHP ≥ 7.2.0.
A partir de parallel 1.2.0, PHP ≥ 8.0.0 est requis.
</para>
<para>
Une brève description des concepts de base de parallel suit, des informations plus détaillées peuvent être trouvées dans cette section du manuel.
</para>
<simplesect>
<title>Exécution</title>
<para>
Un <classname>parallel\Runtime</classname> représente un thread d'interpréteur PHP. Un <classname>parallel\Runtime</classname> est configuré avec un fichier d'amorçage optionnel passé à <methodname>parallel\Runtime::__construct</methodname>, il s'agit généralement d'un chargeur automatique,
ou d'une autre routine de préchargement: le fichier d'amorçage sera inclus avant l'exécution de toute tâche.
</para>
<para>
Après la construction, le <classname>parallel\Runtime</classname> reste disponible jusqu'à ce qu'il soit fermé, tué, ou détruit par les règles de portée normales des objets PHP.
<methodname>parallel\Runtime::run</methodname> permet au développeur de planifier des tâches pour une exécution parallèle.
Un <classname>parallel\Runtime</classname> a un ordre de planification FIFO, les tâches seront exécutées dans l'ordre où elles sont planifiées.
</para>
</simplesect>
<simplesect>
<title>API Fonctionnelle</title>
<para>
Parallel implémente une API fonctionnel, de haut niveau sur <classname>parallel\Runtime</classname> qui fournit un seul point d'entrée pour exécuter du code parallèle
avec une planification automatique: <function>parallel\run</function>.
</para>
</simplesect>
<simplesect>
<title>Tâches</title>
<para>
Une tâche (Task) est simplement une <classname>Closure</classname> destinée à une exécution parallèle. La <classname>Closure</classname> peut contenir presque n'importe quelle instruction, y compris des fermetures imbriquées.
Cependant, certaines instructions sont interdites dans les tâches:
<itemizedlist>
<listitem>
<para>yield</para>
</listitem>
<listitem>
<para>use by-reference</para>
</listitem>
<listitem>
<para>declare class</para>
</listitem>
<listitem>
<para>declare named function</para>
</listitem>
</itemizedlist>
</para>
<note>
<para>
Les fermetures imbriquées peuvent utiliser yield ou use by-reference, mais ne doivent pas contenir de déclarations de classe ou de fonctions nommées.
</para>
</note>
<note>
<para>
Aucune instruction n'est interdite dans les fichiers que la tâche peut inclure.
</para>
</note>
</simplesect>
<simplesect>
<title>Future</title>
<para>
Le <classname>parallel\Future</classname> est utilisé pour accéder à la valeur de retour de la tâche, et expose une API pour l'annulation de la tâche.
</para>
</simplesect>
<simplesect>
<title>Canaux</title>
<para>
Une tâche peut être planifiée avec des arguments, utiliser des variables de portée lexicale (par valeur), et retourner une valeur (via un <classname>parallel\Future</classname>), mais celles-ci ne permettent que la communication unidirectionnelle:
Elles permettent au développeur d'envoyer des données dans une tâche et de récupérer des données à partir d'une tâche, mais ne permettent pas la communication bidirectionnelle entre les tâches.
L'API <classname>parallel\Channel</classname> permet la communication bidirectionnelle entre les tâches, un <classname>parallel\Channel</classname> est un lien de type socket entre les tâches que le développeur peut utiliser pour envoyer et recevoir des données.
</para>
</simplesect>
<simplesect>
<title>Evénements</title>
<para>
L'API <classname>parallel\Events</classname> implémente une boucle d'événements (<classname>Traversable</classname>) native, et la méthode <methodname>parallel\Events::poll</methodname>.
Cela permet au développeur de travailler avec des ensembles de canaux et/ou de futurs.
Le développeur ajoute simplement des canaux et des futurs à la boucle d'événements, en définissant éventuellement l'entrée pour les écritures avec <methodname>parallel\Events::setInput</methodname>,
et entre dans une boucle foreach: parallel lira et écrira dans les objets au fur et à mesure qu'ils deviennent disponibles, renvoyant des objets <classname>parallel\Events\Event</classname>
décrivant les opérations qui se sont produites.
</para>
</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
-->