Files
doc-fr/reference/pthreads/book.xml
T
Jean-Sebastien Hedde 5552c09099 Sync with EN
git-svn-id: https://svn.php.net/repository/phpdoc/fr/trunk@333058 c90b9560-bf6c-de11-be94-00142212c4b1
2014-03-22 18:27:19 +00:00

145 lines
6.9 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 6909677c129f4e08dcd93f9494489c4105096088 Maintainer: yannick Status: ready -->
<!-- Reviewed: no -->
<book xml:id="book.pthreads" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>pthreads</title>
<titleabbrev>pthreads</titleabbrev>
<preface xml:id="intro.pthreads">
&reftitle.intro;
<para>
pthreads est une API orientée objet qui permet le multi-threading en espace utilisateur
en PHP. Il inclut tous les outils nécessaires pour créer des applications multi-threadées
pour le Web ou pour la console. Les applications PHP peuvent créer, lire, écrire, exécuter
et synchroniser des Threads, des Workers, et des objets Threaded.
</para>
<para>
Un objet Threaded :
Un objet Threaded est la fonctionnalité de base qui permet d'utiliser pthreads. Il expose
des méthodes de synchronisation ainsi que divers interfaces utile pour le développeur.
</para>
<para>
Un objet Thread : L'utilisateur peut implémenter un thread en étendant la déclaration Thread
fournie par pthreads et en implémentant la méthode run. N'importe quel membre peut écrire et lire dans n'importe quel contexte
avec une référence au Thread, n'importe quel contexte peut aussi exécuter n'importe quelle
méthode publique et protégée. La méthode run de l'implémentation est exécutée dans un thread
séparé lorsque la méthode start de l'implémentation est appelée depuis le contexte (Thread
ou Processus) qui l'a créé. Seul le contexte qui crée un thread peut le démarre ou le rejoindre.
</para>
<para>
Un objet Worker : Un Thread Worker a un statut persistant, et sera disponible depuis l'appelant
pour le démarrer tant que l'objet ne sort pas du scope, ou qu'il n'est pas explicitement éteint.
N'importe quel contexte avec une référence peut empiler des objets dans le Worker
qui sera exécuté par le Worker dans un Thread séparé. La méthode run d'un Worker est exécutée
avant les objets de la pile, ainsi, il peut initialiser les ressources dont les objets
auront besoin.
</para>
<para>
Un Pool:
Un Pool de Worker threadés peut être utilités pour distribuer des objets Threaded sur les
Workers. La classe Pool implémente cette fonctionnalité et tient compte des références de facon
saine.
Introduite dans la version v1.0.0, l'implémentation de Pool est la plus simple et efficiente
facon d'utiliser de nombreux threads.
</para>
<caution>
<para>
Pool est un objet PHP classique, et donc ses instances ne doivent pas être partagés entre les
contextes.
</para>
</caution>
<para>
Synchronisation : Tous les objets que pthreads crée possèdent un mécanisme de synchronisation de
la forme (familier pour les programmeurs Java) ::wait et ::notify. L'appel à ::wait sur un objet fera
que le contexte attendra qu'un autre contexte appelle ::notify sur le même objet. Ceci permet une
synchronisation puissante entre les objets Threadés en PHP.
</para>
<caution>
<para>
Tout objet prévu pour être utilisé dans une partie multi-threadé de votre application doit
étendre Treaded.
</para>
</caution>
<para>
Modificateurs de méthode : Les méthodes protégées des objets Threadés sont protégées par pthreads,
aussi, uniquement un contexte peut appeler cette méthode à la fois. Les méthodes privées des objets
Threadés peuvent seulement être appelées depuis l'objet Threadé pendant l'exécution.
</para>
<para>
Stockage des données : En règle générale, tous les types de données pouvant être linéarisés peuvent
être utilisés comme membre d'un objet Threadé, ils peuvent être lus, et écrits depuis n'importe quel
contexte avec une référence vers l'objet Threadé. Tous les types de données ne sont pas stockés
après linéarisation ; les types simples sont stockés sous leur forme initiale. Les types complexes,
les tableaux et les objets qui ne sont pas Threadés, sont stockés linéarisés ; ils peuvent être lus
et écrits dans l'objet Threadé depuis n'importe quel contexte avec une référence.
A l'exception des objets Threadés, toute référence utilisée pour définir un membre d'un objet Threadé
est séparé de la référence dans l'objet Threadé ; les mêmes données peuvent être lues directement
depuis l'objet Threadé à tout moment par n'importe quel contexte avec une référence vers l'objet Threadé.
</para>
<para>
Membres statiques : Lorsqu'un nouveau contexte est créé (Thread ou Worker), seuls les membres simples
des classes statiques sont copiés, aucune ressource ni objet ne sont copiés dans le contexte du thread
depuis les membres statiques d'une classe. Ceci permet alors à la fonction une sorte de stockage local
au niveau du thread. Par exemple, lors du démarrage du contexte, une classe dont les membres statiques
incluent des informations de connexion vers un serveur de base de données, seules les informations
seront copiées, et non la connexion en tant que telle. Ceci permet au nouveau contexte d'initialiser
une connexion de la même façon que le contexte qui l'a créé, stockant la connexion au même endroit
sans pour autant affecter le contexte original.
</para>
<caution>
<para>
Lorsque print_r, var_dump et d'autres fonctions de débogage sont exécutées, elles n'incluent pas
de protection contre la récursion.
</para>
</caution>
<note>
<para>
Ressources : Les extensions et les fonctionalités qui définissent des ressoures en PHP ne sont pas préparées
pour ce type d'environnement ; pthreads prend des dispositions en matière de ressource à partager entre
les contextes, cependant, pour la plupart des ressources, elles devront être considérées comme dangereuses.
Un soin et une extrème prudence devront être de mise pour partager les ressources entre les contextes.
</para>
</note>
<caution>
<para>
Dans l'environnement d'exécution de pthreads, des restrictions et des limitations sont nécessaires afin de
fournir un environnement stable.
</para>
</caution>
</preface>
&reference.pthreads.setup;
&reference.pthreads.constants;
&reference.pthreads.threaded;
&reference.pthreads.thread;
&reference.pthreads.worker;
&reference.pthreads.modifiers;
&reference.pthreads.pool;
&reference.pthreads.mutex;
&reference.pthreads.cond;
</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
-->