-
Notifications
You must be signed in to change notification settings - Fork 166
Expand file tree
/
Copy pathevloop.xml
More file actions
235 lines (232 loc) · 8.45 KB
/
evloop.xml
File metadata and controls
235 lines (232 loc) · 8.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: b4fbf4434abeca44c58575ff3967e5640f7877d5 Maintainer: yannick Status: ready -->
<!-- Reviewed: no -->
<reference xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude" xml:id="class.evloop" role="class">
<title>La classe EvLoop</title>
<titleabbrev>EvLoop</titleabbrev>
<partintro>
<!-- {{{ EvLoop intro -->
<section xml:id="evloop.intro">
&reftitle.intro;
<simpara>
Représente une boucle d'événements qui est toujours distincte de la
<emphasis>boucle par défaut</emphasis>. Contrairement à la
<emphasis>boucle par défaut</emphasis>, elle ne peut pas gérer les
watchers <classname>EvChild</classname>.
</simpara>
<simpara>
Lorsqu'on utilise les threads, nous devons créer une boucle par thread,
et utiliser la <emphasis>boucle par défaut</emphasis> dans le thread
parent.
</simpara>
<simpara>
La <emphasis>boucle d'événements par défaut</emphasis> est initialisée
automatiquement par <emphasis>Ev</emphasis>. Elle est accessible via les
méthodes de la classe <classname>Ev</classname> ou via la méthode
<methodname>EvLoop::defaultLoop</methodname>.
</simpara>
</section>
<!-- }}} -->
<section xml:id="evloop.synopsis">
&reftitle.classsynopsis;
<!-- {{{ Synopsis -->
<classsynopsis>
<ooclass>
<classname>EvLoop</classname>
</ooclass>
<!-- {{{ Class synopsis -->
<classsynopsisinfo>
<ooclass>
<modifier>final</modifier>
<classname>EvLoop</classname>
</ooclass>
</classsynopsisinfo>
<!-- }}} -->
<classsynopsisinfo role="comment">&Properties;</classsynopsisinfo>
<fieldsynopsis>
<modifier>public</modifier>
<varname linkend="evloop.props.data">data</varname>
</fieldsynopsis>
<fieldsynopsis>
<modifier>public</modifier>
<varname linkend="evloop.props.backend">backend</varname>
</fieldsynopsis>
<fieldsynopsis>
<modifier>public</modifier>
<varname linkend="evloop.props.is-default-loop">is_default_loop</varname>
</fieldsynopsis>
<fieldsynopsis>
<modifier>public</modifier>
<varname linkend="evloop.props.iteration">iteration</varname>
</fieldsynopsis>
<fieldsynopsis>
<modifier>public</modifier>
<varname linkend="evloop.props.pending">pending</varname>
</fieldsynopsis>
<fieldsynopsis>
<modifier>public</modifier>
<varname linkend="evloop.props.io-interval">io_interval</varname>
</fieldsynopsis>
<fieldsynopsis>
<modifier>public</modifier>
<varname linkend="evloop.props.timeout-interval">timeout_interval</varname>
</fieldsynopsis>
<fieldsynopsis>
<modifier>public</modifier>
<varname linkend="evloop.props.depth">depth</varname>
</fieldsynopsis>
<classsynopsisinfo role="comment">&Methods;</classsynopsisinfo>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.evloop')/db:refentry/db:refsect1[@role='description']/descendant::db:constructorsynopsis[not(@role='procedural')])"/>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.evloop')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[not(@role='procedural')])"/>
</classsynopsis>
<!-- }}} -->
</section>
<!-- {{{ EvLoop properties -->
<section xml:id="evloop.props">
&reftitle.properties;
<variablelist>
<varlistentry xml:id="evloop.props.data">
<term>
<varname>data</varname>
</term>
<listitem>
<simpara>
Données personnalisées à attacher à la boucle
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="evloop.props.backend">
<term>
<varname>backend</varname>
</term>
<listitem>
<simpara>
<emphasis>Lecture seule</emphasis>.
Les
<link linkend="ev.constants.watcher-backends">drapeaux du backend</link>
indiquant le backend d'événements en cours d'utilisation.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="evloop.props.is-default-loop">
<term>
<varname>is_default_loop</varname>
</term>
<listitem>
<simpara>
<emphasis>Lecture seule</emphasis>.
&true; si c'est la boucle d'événements par défaut.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="evloop.props.iteration">
<term>
<varname>iteration</varname>
</term>
<listitem>
<simpara>
Le compteur d'itération courant de la boucle. Voir la méthode
<methodname>Ev::iteration</methodname>.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="evloop.props.pending">
<term>
<varname>pending</varname>
</term>
<listitem>
<simpara>
Le nombre de watchers en attente.
<literal>0</literal> indique qu'il n'y a aucun watcher en attente.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="evloop.props.io-interval">
<term>
<varname>io_interval</varname>
</term>
<listitem>
<simpara>
Une valeur haute pour <varname>io_interval</varname> permet à
<emphasis>libev</emphasis> de passer plus de temps à collecter
les événements <classname>EvIo</classname>, ainsi, plus d'événements
peuvent être gérés par itération, mais cela va augmenter la
latence. Les délais d'attente maximum (pour à la fois
<classname>EvPeriodic</classname> et <classname>EvTimer</classname>)
ne seront pas affectés. Le fait de définir cette option à une valeur
différente de zéro va introduire un appel à <literal>sleep()</literal>
supplémentaire dans la plupart des itérations de la boucle.
Le temps de pause assure que <emphasis>libev</emphasis>
ne va pas interroger <classname>EvIo</classname> plus d'une fois
pendant cet intervalle, en moyenne. La plupart des programmes
peuvent avoir des effets bénéfiques en définissant
<varname>io_interval</varname> à une valeur proche de
<literal>0.1</literal>, ce qui est en général suffisant pour les
serveurs interactifs (et non destinés aux jeux). Il n'y a généralement
aucun sens à définir cette valeur à une valeur inférieure à
<literal>0.01</literal>, sachant que l'on s'approche de la
granularité au niveau des durées de la plupart des systèmes.
</simpara>
<simpara>
Voir aussi les
<link xlink:href="http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#FUNCTIONS_CONTROLLING_EVENT_LOOPS">
fonctions contrôlant les boucles d'événements</link>.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="evloop.props.timeout-interval">
<term>
<varname>timeout_interval</varname>
</term>
<listitem>
<simpara>
Une valeur haute pour <varname>timeout_interval</varname> permet à
<emphasis>libev</emphasis> de passer plus de temps à collecter les
délais maximaux d'attente, mais a pour conséquence d'accroître
la latence, le stress et l'inexactitude (la fonction de rappel
du watcher sera appelée plus tard). Les watchers <classname>EvIo</classname>
ne seront pas affectés. Le fait de définir cette valeur à une valeur non
nulle ne va introduire aucun surcoût supplémentaire à
<emphasis>libev</emphasis>. Voir aussi les
<link xlink:href="http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#FUNCTIONS_CONTROLLING_EVENT_LOOPS">
fonctions contrôlant les boucles d'événements</link>.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="evloop.props.depth">
<term>
<varname>depth</varname>
</term>
<listitem>
<simpara>
La profondeur de la récursion. Voir la méthode
<methodname>Ev::depth</methodname>.
</simpara>
</listitem>
</varlistentry>
</variablelist>
</section>
<!-- }}} -->
</partintro>
&reference.ev.entities.evloop;
</reference>
<!-- 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
-->