1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-23 23:32:16 +01:00
Files
archived-doc-ru/reference/ev/evloop.xml
2026-01-18 22:20:57 +00:00

245 lines
9.7 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: b4fbf4434abeca44c58575ff3967e5640f7877d5 Maintainer: rjhdby 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>Класс EvLoop</title>
<titleabbrev>EvLoop</titleabbrev>
<partintro>
<!-- {{{ EvLoop intro -->
<section xml:id="evloop.intro">
&reftitle.intro;
<simpara>
Представляет событийный цикл, который всегда отличается
от <emphasis>цикла по умолчанию</emphasis>.
В отличие от <emphasis>цикла по умолчанию</emphasis>,
он не может работать с наблюдателями
<classname>EvChild</classname>.
</simpara>
<simpara>
Если доступна работа с потоками исполнения, то необходимо
создать цикл для каждого потока используя в качестве родителя
<emphasis>цикл по умолчанию</emphasis>.
</simpara>
<simpara>
<emphasis>Событийный цикл по умолчанию</emphasis>
инициализируется автоматически с помощью
<emphasis>Ev</emphasis>.
Он доступен через методы класса
<classname>Ev</classname> или через метод
<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>
Произвольные данные, которые добавили циклу
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="evloop.props.backend">
<term>
<varname>backend</varname>
</term>
<listitem>
<simpara>
<emphasis>Только чтение</emphasis>.
<link linkend="ev.constants.watcher-backends">Флаги бэкенда</link>,
которые указывают, какой событийный бэкенд используется.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="evloop.props.is-default-loop">
<term>
<varname>is_default_loop</varname>
</term>
<listitem>
<simpara>
<emphasis>Только чтение</emphasis>.
Если установили значение &true;, то это цикл по умолчанию.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="evloop.props.iteration">
<term>
<varname>iteration</varname>
</term>
<listitem>
<simpara>
Текущий счётчик итераций. Смотри
<methodname>Ev::iteration</methodname>
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="evloop.props.pending">
<term>
<varname>pending</varname>
</term>
<listitem>
<simpara>
Количество ожидающих наблюдателей.
Значение <literal>0</literal> указывает, что
ожидающих наблюдателей нет.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="evloop.props.io-interval">
<term>
<varname>io_interval</varname>
</term>
<listitem>
<simpara>
Более высокие значения
<varname>io_interval</varname>
разрешают
модулю <emphasis>libev</emphasis>
тратить больше времени для сбора событий
<classname>EvIo</classname>,
что позволит обработать больше событий за одну итерацию
заплатив за это увеличенными задержками.
Время ожидания (и <classname>EvPeriodic</classname>
и <classname>EvTimer</classname>) не будет затронуто.
Установка в ненулевое значение добавить дополнительный
вызов <literal>sleep()</literal> в большинство итераций цикла.
Время сна гарантирует, что
<emphasis>libev</emphasis>
не будет передавать события
<classname>EvIo</classname>
чаще, чем один раз за этот период, в среднем.
Для большинства программ хорошим значением
<varname>io_interval</varname>
будет значение около
<literal>0.1</literal>,
этого достаточно для большинства интерактивных серверов (не для игр).
Обычно разница незаметна, если установили значение
меньше <literal>0.01</literal>, поскольку
это значение будет близко к минимальному интервалу вычисляемого
времени для большинства систем.
</simpara>
<simpara>
Также читайте
<link xlink:href="http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#FUNCTIONS_CONTROLLING_EVENT_LOOPS">ФУНКЦИИ УПРАВЛЕНИЯ СОБЫТИЙНЫМИ ЦИКЛАМИ</link>.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="evloop.props.timeout-interval">
<term>
<varname>timeout_interval</varname>
</term>
<listitem>
<simpara>
Более высокие значения
<varname>timeout_interval</varname>
позволят
<emphasis>libev</emphasis>
тратить больше времени для сбора превышенного времени ожидания за счёт увеличения
задержек, джиттеров или неточностей (callback-функция наблюдателя
будет вызвана позже).
Наблюдатели <classname>EvIo</classname> не будут затронуты.
Увеличение этого значение не вызовет перерасхода ресурсов в
<emphasis>libev</emphasis>. Также читайте
<link xlink:href="http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#FUNCTIONS_CONTROLLING_EVENT_LOOPS">ФУНКЦИИ УПРАВЛЕНИЯ СОБЫТИЙНЫМИ ЦИКЛАМИ</link>.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="evloop.props.depth">
<term>
<varname>depth</varname>
</term>
<listitem>
<simpara>
Глубина рекурсии. Смотрите описание метода <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
-->