mirror of
https://github.com/macintoshplus/doc-fr.git
synced 2026-04-28 11:13:14 +02:00
5552c09099
git-svn-id: https://svn.php.net/repository/phpdoc/fr/trunk@333058 c90b9560-bf6c-de11-be94-00142212c4b1
145 lines
6.9 KiB
XML
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
|
|
-->
|