1
0
mirror of https://github.com/php/doc-fr.git synced 2026-03-24 07:02:06 +01:00
Files

135 lines
6.1 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: Fan2Shrek Status: ready -->
<!-- Reviewed: yes -->
<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 est une extension de concurrence parallèle pour PHP ≥ 7.2.0.
À partir de parallel 1.2.0, PHP ≥ 8.0.0 est requis.
</simpara>
<simpara>
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.
</simpara>
<simplesect>
<title>Exécution</title>
<simpara>
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.
</simpara>
<simpara>
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.
</simpara>
</simplesect>
<simplesect>
<title>API Fonctionnelle</title>
<simpara>
Parallel implémente une API fonctionnelle, 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>.
</simpara>
</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>
<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>
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.
</simpara>
</note>
<note>
<simpara>
Aucune instruction n'est interdite dans les fichiers que la tâche peut inclure.
</simpara>
</note>
</simplesect>
<simplesect>
<title>Future</title>
<simpara>
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.
</simpara>
</simplesect>
<simplesect>
<title>Canaux</title>
<simpara>
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.
</simpara>
</simplesect>
<simplesect>
<title>Événements</title>
<simpara>
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.
</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
-->