mirror of
https://github.com/php/doc-ru.git
synced 2026-03-23 23:32:16 +01:00
parallel : fix XML by converting para to simpara tags via script
This commit is contained in:
@@ -1,38 +1,38 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: bbfa9738785f054752e6cb565cd0a58e71015bc6 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
<book xml:id="book.parallel" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<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;
|
||||
<para>
|
||||
<simpara>
|
||||
parallel - это модуль параллельного выполнения для PHP ≥ 7.2.0.
|
||||
Начиная с parallel 1.2.0, требуется PHP ≥ 8.0.0.
|
||||
</para>
|
||||
<para>
|
||||
</simpara>
|
||||
<simpara>
|
||||
Краткое описание основных понятий параллельных процессов описано ниже, более подробную информацию можно найти в этом разделе руководства.
|
||||
</para>
|
||||
</simpara>
|
||||
<simplesect>
|
||||
<title>Runtime</title>
|
||||
<para>
|
||||
<simpara>
|
||||
<classname>parallel\Runtime</classname> представляет поток интерпретатора PHP. <classname>parallel\Runtime</classname> настроен с дополнительным файлом начальной загрузки, переданным в <methodname>parallel\Runtime::__construct</methodname>, обычно это автозагрузчик
|
||||
или какая-либо другая процедура предварительной загрузки: файл начальной загрузки будет подключаться перед выполнением любой задачи.
|
||||
</para>
|
||||
<para>
|
||||
</simpara>
|
||||
<simpara>
|
||||
После создания <classname>parallel\Runtime</classname> остаётся доступным до тех пор, пока он не будет закрыт, уничтожен или уничтожен обычными правилами области видимости объектов PHP.
|
||||
<methodname>parallel\Runtime::run</methodname> позволяет программисту планировать задачи для параллельного выполнения.
|
||||
У <classname>parallel\Runtime</classname> расписание FIFO, задачи будут выполняться в том порядке, в котором они запланированы.
|
||||
</para>
|
||||
</simpara>
|
||||
</simplesect>
|
||||
<simplesect>
|
||||
<title>Функциональный API</title>
|
||||
<para>
|
||||
<simpara>
|
||||
parallel реализует функциональный API более высокого уровня поверх <classname>parallel\Runtime</classname>, который обеспечивает единую точку входа функции для выполнения параллельного кода
|
||||
с автоматическим планированием: <function>parallel\run</function>.
|
||||
</para>
|
||||
</simpara>
|
||||
</simplesect>
|
||||
<simplesect>
|
||||
<title>Задача</title>
|
||||
@@ -41,58 +41,58 @@
|
||||
Однако есть некоторые инструкции, которые запрещены в задачах:
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>yield</para>
|
||||
<simpara>yield</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>use by-reference</para>
|
||||
<simpara>use by-reference</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>declare class</para>
|
||||
<simpara>declare class</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>declare named function</para>
|
||||
<simpara>declare named function</simpara>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
<note>
|
||||
<para>
|
||||
<simpara>
|
||||
Вложенные замыкания могут содержать "yield" или "use by-reference", но не должны содержать объявления классов или именованных функций.
|
||||
</para>
|
||||
</simpara>
|
||||
</note>
|
||||
<note>
|
||||
<para>
|
||||
<simpara>
|
||||
Никакие инструкции не запрещены в файлах, которые может включать задача.
|
||||
</para>
|
||||
</simpara>
|
||||
</note>
|
||||
</simplesect>
|
||||
<simplesect>
|
||||
<title>Фьючерс</title>
|
||||
<para>
|
||||
<simpara>
|
||||
<classname>parallel\Future</classname> используется для доступа к возвращаемому значению из задачи и предоставляет API для отмены задачи.
|
||||
</para>
|
||||
</simpara>
|
||||
</simplesect>
|
||||
<simplesect>
|
||||
<title>Канал</title>
|
||||
<para>
|
||||
<simpara>
|
||||
Задачу можно запланировать с аргументами, использовать переменные лексической области видимости (по значению) и вернуть значение (с помощью <classname>parallel\Future</classname>), но это разрешает только однонаправленную связь:
|
||||
Это позволяет программисту отправлять данные и извлекать данные из задачи, но не допускают двунаправленную связь между задачами.
|
||||
API <classname>parallel\Channel</classname> обеспечивает двунаправленную связь между задачами, <classname>parallel\Channel</classname> - это соединение типа сокета между задачами, которое программист может использовать для отправки и получения данных.
|
||||
</para>
|
||||
</simpara>
|
||||
</simplesect>
|
||||
<simplesect>
|
||||
<title>События</title>
|
||||
<para>
|
||||
<simpara>
|
||||
API <classname>parallel\Events</classname> реализует собственный цикл событий (<classname>Traversable</classname>) и метод <methodname>parallel\Events::poll</methodname>.
|
||||
Это позволяет программисту работать с наборами каналов и/или фьючерсами.
|
||||
Программист просто добавляет каналы и фьючерсы в цикл событий, необязательно устанавливая вход для записи с помощью <methodname>parallel\Events::setInput</methodname>,
|
||||
и входит в foreach: parallel будет читать и записывать объекты по мере их превращения. Доступно с получением объектов <classname>parallel\Events\Event</classname>,
|
||||
описывающих произошедшие операции.
|
||||
</para>
|
||||
</simpara>
|
||||
</simplesect>
|
||||
<simplesect role="seealso">
|
||||
&reftitle.seealso;
|
||||
<simplelist>
|
||||
<member><xref linkend="philosophy.parallel" /></member>
|
||||
<member><xref linkend="philosophy.parallel"/></member>
|
||||
</simplelist>
|
||||
</simplesect>
|
||||
</preface>
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 3985f162bcb7f71764c8ea1c637d70303c01847c Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
<section xml:id="parallel.installation" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<section xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="parallel.installation">
|
||||
&reftitle.install;
|
||||
|
||||
<para>
|
||||
<simpara>
|
||||
Используйте <option role="configure">--with-parallel[=DIR]</option> при компиляции PHP.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
<para>
|
||||
<simpara>
|
||||
Пользователям Windows необходимо добавить <filename>php_parallel.dll</filename> в &php.ini;
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
</section>
|
||||
|
||||
<!-- Keep this comment at the end of the file
|
||||
Local variables:
|
||||
mode: sgml
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: d9ecfba6ad07e4e0b1b13ed1f0592f09d2e2f5c9 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
<reference xml:id="functional.parallel" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<reference xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="functional.parallel">
|
||||
<title>Функциональный API</title>
|
||||
<partintro>
|
||||
<para>
|
||||
<simpara>
|
||||
API <classname>parallel\Runtime</classname> обеспечивает высокую степень контроля для опытных программистов PHP и тех, кто хорошо знаком с написанием приложений, использующих параллельные процессы.
|
||||
</para>
|
||||
</simpara>
|
||||
<para>
|
||||
Функциональный API обеспечивает меньший контроль в обмен на возможность принимать решения для программиста:
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>все исполняемые среды выполнения загружаются одинаково</para>
|
||||
<simpara>все исполняемые среды выполнения загружаются одинаково</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>планирование определяется API, а не программистом</para>
|
||||
<simpara>планирование определяется API, а не программистом</simpara>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<function>parallel\run</function> обеспечивает гарантию того, что задача начнёт выполняться параллельно, как только это разрешено ограничениями оборудования и операционной системы, без
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 1efc90bacb2ebf840f5416bd11c8daf8c9345e33 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude" xml:id="parallel.bootstrap">
|
||||
<refnamediv>
|
||||
@@ -13,9 +13,9 @@
|
||||
<type>void</type><methodname>parallel\bootstrap</methodname>
|
||||
<methodparam><type>string</type><parameter>file</parameter></methodparam>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Должен использовать предоставленный <parameter>file</parameter> для начальной загрузки всех сред выполнения, созданных для автоматического планирования с помощью <function>parallel\run</function>.
|
||||
</para>
|
||||
</simpara>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="parameters">
|
||||
@@ -24,9 +24,9 @@
|
||||
<varlistentry>
|
||||
<term><parameter>file</parameter></term>
|
||||
<listitem>
|
||||
<para>
|
||||
<simpara>
|
||||
Путь к файлу для начальной загрузки всех сред выполнения.
|
||||
</para>
|
||||
</simpara>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
@@ -34,22 +34,22 @@
|
||||
|
||||
<refsect1 role="returnvalues">
|
||||
&reftitle.returnvalues;
|
||||
<para>
|
||||
<simpara>
|
||||
&return.void;
|
||||
</para>
|
||||
</simpara>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="errors">
|
||||
&reftitle.errors;
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>parallel\Runtime\Error\Bootstrap</type>, если этот процесс уже был ранее вызван.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>parallel\Runtime\Error\Bootstrap</type>, если вызывается после <function>parallel\run</function>.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
</refsect1>
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 41445b3d771660805270f52adf0e421aa20f12ab Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="parallel.run" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude" xml:id="parallel.run">
|
||||
<refnamediv>
|
||||
<refname>parallel\run</refname>
|
||||
<refpurpose>Выполнение</refpurpose>
|
||||
@@ -14,43 +13,43 @@
|
||||
<type class="union"><type>Future</type><type>null</type></type><methodname>parallel\run</methodname>
|
||||
<methodparam><type>Closure</type><parameter>task</parameter></methodparam>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Планирует <parameter>task</parameter> для выполнения в parallel.
|
||||
</para>
|
||||
</simpara>
|
||||
<methodsynopsis>
|
||||
<type class="union"><type>Future</type><type>null</type></type><methodname>parallel\run</methodname>
|
||||
<methodparam><type>Closure</type><parameter>task</parameter></methodparam>
|
||||
<methodparam><type>array</type><parameter>argv</parameter></methodparam>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Планирует <parameter>task</parameter> для выполнения в parallel, передавая <parameter>argv</parameter> во время выполнения.
|
||||
</para>
|
||||
</simpara>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="scheduling-characteristics">
|
||||
<title>Автоматическое планирование</title>
|
||||
<para>
|
||||
<simpara>
|
||||
Если <classname>\parallel\Runtime</classname> внутренне созданный и кешированный предыдущим вызовом <function>parallel\run</function> бездействует,
|
||||
он будет использоваться для выполнения задачи. Если ни один <classname>\parallel\Runtime</classname> не бездействует, parallel создаст и сохранит в кеш <classname>\parallel\Runtime</classname>.
|
||||
</para>
|
||||
</simpara>
|
||||
<note>
|
||||
<para>
|
||||
<simpara>
|
||||
Объекты <classname>\parallel\Runtime</classname>, созданные программистом, не используются для автоматического планирования.
|
||||
</para>
|
||||
</simpara>
|
||||
</note>
|
||||
</refsect1>
|
||||
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('parallel-runtime.run')/db:refsect1[@role='parameters'])" />
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('parallel-runtime.run')/db:refsect1[@role='closure-characteristics'])" />
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('parallel-runtime.run')/db:refsect1[@role='argv-characteristics'])" />
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('parallel-runtime.run')/db:refsect1[@role='object-characteristics'])" />
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('parallel-runtime.run')/db:refsect1[@role='returnvalues'])" />
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('parallel-runtime.run')/db:refsect1[@role='exceptions'])" />
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('parallel-runtime.run')/db:refsect1[@role='parameters'])"/>
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('parallel-runtime.run')/db:refsect1[@role='closure-characteristics'])"/>
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('parallel-runtime.run')/db:refsect1[@role='argv-characteristics'])"/>
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('parallel-runtime.run')/db:refsect1[@role='object-characteristics'])"/>
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('parallel-runtime.run')/db:refsect1[@role='returnvalues'])"/>
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('parallel-runtime.run')/db:refsect1[@role='exceptions'])"/>
|
||||
|
||||
<refsect1 role="seealso">
|
||||
&reftitle.seealso;
|
||||
<simplelist>
|
||||
<member><xref linkend="parallel-runtime.run" /></member>
|
||||
<member><xref linkend="parallel-runtime.run"/></member>
|
||||
</simplelist>
|
||||
</refsect1>
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: d9ecfba6ad07e4e0b1b13ed1f0592f09d2e2f5c9 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
<reference xml:id="class.parallel-channel" role="class" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<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.parallel-channel" role="class">
|
||||
|
||||
<title>Класс parallel\Channel</title>
|
||||
<titleabbrev>parallel\Channel</titleabbrev>
|
||||
@@ -9,44 +9,44 @@
|
||||
<partintro>
|
||||
<section>
|
||||
<title>Небуферизованные каналы</title>
|
||||
<para>
|
||||
<simpara>
|
||||
Небуферизованный канал будет блокироваться при вызовах <methodname>parallel\Channel::send</methodname> до тех пор, пока не появится получатель, и блокироваться при вызовах
|
||||
<methodname>parallel\Channel::recv</methodname> до тех пор, пока не появится отправитель. Это означает, что небуферизованный канал - это не только способ обмена данными между задачами,
|
||||
но и простой метод синхронизации.
|
||||
</para>
|
||||
<para>
|
||||
</simpara>
|
||||
<simpara>
|
||||
Небуферизованный канал - это самый быстрый способ обмена данными между задачами, требующий наименьшего количества копирования.
|
||||
</para>
|
||||
</simpara>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Буферизованные каналы</title>
|
||||
<para>
|
||||
<simpara>
|
||||
Буферизованный канал не будет блокироваться при вызовах <methodname>parallel\Channel::send</methodname> до заполнения буфера, а вызовы
|
||||
<methodname>parallel\Channel::recv</methodname> будут блокироваться до тех пор, пока в буфере есть данные.
|
||||
</para>
|
||||
</simpara>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Замыкания поверх каналов</title>
|
||||
<para>
|
||||
<simpara>
|
||||
Мощная особенность параллельных каналов состоит в том, что они позволяют обмениваться замыканиями между задачами (и средами выполнения).
|
||||
</para>
|
||||
<para>
|
||||
</simpara>
|
||||
<simpara>
|
||||
Когда замыкание отправляется по каналу, оно буферизуется, не меняет буферизацию канала, передающего замыкание,
|
||||
но оно влияет на статическую область видимости внутри замыкания: одно и то же замыкание, отправленное в разные среды выполнения или в одну и ту же среду выполнения,
|
||||
не будет делиться своей статической областью.
|
||||
</para>
|
||||
<para>
|
||||
</simpara>
|
||||
<simpara>
|
||||
Это означает, что всякий раз, когда выполняется замыкание, которое было передано каналом, статическое состояние будет таким, каким оно было при буферизации замыкания.
|
||||
</para>
|
||||
</simpara>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Анонимные каналы</title>
|
||||
<para>
|
||||
<simpara>
|
||||
Конструктор анонимного канала позволяет программисту избегать присвоения имён каждому каналу: parallel генерирует уникальное имя для анонимных каналов.
|
||||
</para>
|
||||
</simpara>
|
||||
</section>
|
||||
|
||||
<section xml:id="parallel-channel.synopsis">
|
||||
@@ -67,22 +67,22 @@
|
||||
|
||||
<classsynopsisinfo role="comment">Анонимный конструктор</classsynopsisinfo>
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.parallel-channel')/db:refentry/db:refsect1[@audience='anonymous']/descendant::db:methodsynopsis[not(@role='procedural')])">
|
||||
<xi:fallback />
|
||||
<xi:fallback/>
|
||||
</xi:include>
|
||||
|
||||
<classsynopsisinfo role="comment">Доступ</classsynopsisinfo>
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.parallel-channel')/db:refentry/db:refsect1[@audience='access']/descendant::db:methodsynopsis[not(@role='procedural')])">
|
||||
<xi:fallback />
|
||||
<xi:fallback/>
|
||||
</xi:include>
|
||||
|
||||
<classsynopsisinfo role="comment">Совместное использование</classsynopsisinfo>
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.parallel-channel')/db:refentry/db:refsect1[@audience='sharing']/descendant::db:methodsynopsis[not(@role='procedural')])">
|
||||
<xi:fallback />
|
||||
<xi:fallback/>
|
||||
</xi:include>
|
||||
|
||||
<classsynopsisinfo role="comment">Закрытие</classsynopsisinfo>
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.parallel-channel')/db:refentry/db:refsect1[@audience='close']/descendant::db:methodsynopsis[not(@role='procedural')])">
|
||||
<xi:fallback />
|
||||
<xi:fallback/>
|
||||
</xi:include>
|
||||
|
||||
<classsynopsisinfo role="comment">Константа для бесконечной буферизации</classsynopsisinfo>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: d9ecfba6ad07e4e0b1b13ed1f0592f09d2e2f5c9 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
<reference xml:id="class.parallel-events-event" role="class" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<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.parallel-events-event" role="class">
|
||||
|
||||
<title>Класс parallel\Events\Event</title>
|
||||
<titleabbrev>parallel\Events\Event</titleabbrev>
|
||||
@@ -10,11 +10,11 @@
|
||||
|
||||
<section>
|
||||
<title>Объекты событий</title>
|
||||
<para>
|
||||
<simpara>
|
||||
Когда возвращается объект Event, <varname>Event::$object</varname> должен быть удалён из цикла,
|
||||
который его вернул, если событие является событием записи, класс <classname>Input</classname>
|
||||
экземпляра <varname>Event::$source</varname> также следует удалить.
|
||||
</para>
|
||||
</simpara>
|
||||
</section>
|
||||
<section xml:id="parallel-events-event.synopsis">
|
||||
&reftitle.classsynopsis;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: d9ecfba6ad07e4e0b1b13ed1f0592f09d2e2f5c9 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
<reference xml:id="class.parallel-events-input" role="class" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<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.parallel-events-input" role="class">
|
||||
|
||||
<title>Класс parallel\Events\Input</title>
|
||||
<titleabbrev>parallel\Events\Input</titleabbrev>
|
||||
@@ -10,17 +10,17 @@
|
||||
|
||||
<section>
|
||||
<title>Входные данные событий</title>
|
||||
<para>
|
||||
<simpara>
|
||||
Объект Input - это контейнер для данных, которые объект <classname>parallel\Events</classname> запишет
|
||||
в объекты <classname>parallel\Channel</classname> по мере их доступности.
|
||||
Несколько циклов событий могут совместно использовать контейнер ввода - parallel не проверяет содержимое контейнера,
|
||||
если он установлен как входные данные для объекта <classname>parallel\Events</classname>.
|
||||
</para>
|
||||
</simpara>
|
||||
<note>
|
||||
<para>
|
||||
<simpara>
|
||||
Когда объект <classname>parallel\Events</classname> выполняет запись, цель удаляется из объекта входных данных,
|
||||
как если бы был вызван метод <methodname>parallel\Events\Input::remove</methodname>.
|
||||
</para>
|
||||
</simpara>
|
||||
</note>
|
||||
</section>
|
||||
|
||||
@@ -41,13 +41,13 @@
|
||||
<!-- }}} -->
|
||||
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.parallel-events-input')/db:refentry/db:refsect1[@audience='adding']/descendant::db:methodsynopsis[not(@role='procedural')])">
|
||||
<xi:fallback />
|
||||
<xi:fallback/>
|
||||
</xi:include>
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.parallel-events-input')/db:refentry/db:refsect1[@audience='removing']/descendant::db:methodsynopsis[not(@role='procedural')])">
|
||||
<xi:fallback />
|
||||
<xi:fallback/>
|
||||
</xi:include>
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.parallel-events-input')/db:refentry/db:refsect1[@audience='clearing']/descendant::db:methodsynopsis[not(@role='procedural')])">
|
||||
<xi:fallback />
|
||||
<xi:fallback/>
|
||||
</xi:include>
|
||||
|
||||
</classsynopsis>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: d9ecfba6ad07e4e0b1b13ed1f0592f09d2e2f5c9 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
<reference xml:id="class.parallel-events" role="class" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<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.parallel-events" role="class">
|
||||
|
||||
<title>Класс parallel\Events</title>
|
||||
<titleabbrev>parallel\Events</titleabbrev>
|
||||
@@ -9,12 +9,12 @@
|
||||
<partintro>
|
||||
<section>
|
||||
<title>Цикл событий</title>
|
||||
<para>
|
||||
<simpara>
|
||||
Цикл событий отслеживает состояние наборов объектов Future и/или Channel (целей) для выполнения операций чтения
|
||||
(<methodname>parallel\Future::value</methodname>, <methodname>parallel\Channel::recv</methodname>)
|
||||
и записи (<methodname>parallel\Channel::send</methodname>) по мере того,
|
||||
как цели становятся доступными и операции могут выполняться без блокировки цикла событий.
|
||||
</para>
|
||||
</simpara>
|
||||
</section>
|
||||
<section xml:id="parallel-events.synopsis">
|
||||
&reftitle.classsynopsis;
|
||||
@@ -40,22 +40,22 @@
|
||||
|
||||
<classsynopsisinfo role="comment">Входные данные</classsynopsisinfo>
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.parallel-events')/db:refentry/db:refsect1[@audience='input']/descendant::db:methodsynopsis[not(@role='procedural')])">
|
||||
<xi:fallback />
|
||||
<xi:fallback/>
|
||||
</xi:include>
|
||||
|
||||
<classsynopsisinfo role="comment">Цели</classsynopsisinfo>
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.parallel-events')/db:refentry/db:refsect1[@audience='targets']/descendant::db:methodsynopsis[not(@role='procedural')])">
|
||||
<xi:fallback />
|
||||
<xi:fallback/>
|
||||
</xi:include>
|
||||
|
||||
<classsynopsisinfo role="comment">Поведение</classsynopsisinfo>
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.parallel-events')/db:refentry/db:refsect1[@audience='behaviour']/descendant::db:methodsynopsis[not(@role='procedural')])">
|
||||
<xi:fallback />
|
||||
<xi:fallback/>
|
||||
</xi:include>
|
||||
|
||||
<classsynopsisinfo role="comment">Опрос</classsynopsisinfo>
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.parallel-events')/db:refentry/db:refsect1[@audience='polling']/descendant::db:methodsynopsis[not(@role='procedural')])">
|
||||
<xi:fallback />
|
||||
<xi:fallback/>
|
||||
</xi:include>
|
||||
</classsynopsis>
|
||||
<!-- }}} -->
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: a31156c3d8e98d9d8d0d82cab7e37407a4f75f63 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
<reference xml:id="class.parallel-future" role="class" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<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.parallel-future" role="class">
|
||||
|
||||
<title>Класс parallel\Future</title>
|
||||
<titleabbrev>parallel\Future</titleabbrev>
|
||||
@@ -10,9 +10,9 @@
|
||||
|
||||
<section>
|
||||
<title>Объекты Future</title>
|
||||
<para>
|
||||
<simpara>
|
||||
Future представляет возвращаемое значение или неперехваченное исключение из задачи и предоставляет API для отмены.
|
||||
</para>
|
||||
</simpara>
|
||||
<example>
|
||||
<title>Пример, показывающий Future как возвращаемое значение</title>
|
||||
<programlisting role="php">
|
||||
@@ -33,10 +33,10 @@ printf("Привет, %s\n", $future->value());
|
||||
]]>
|
||||
</screen>
|
||||
</example>
|
||||
<para>
|
||||
<simpara>
|
||||
Поведение Future также позволяет использовать его в качестве простой точки синхронизации,
|
||||
даже если задача не возвращает значение явно.
|
||||
</para>
|
||||
</simpara>
|
||||
<example>
|
||||
<title>Пример, показывающий Future как точку синхронизации</title>
|
||||
<programlisting role="php">
|
||||
@@ -86,17 +86,17 @@ echo "\nродительский поток продолжает работат
|
||||
|
||||
<classsynopsisinfo role="comment">Разрешение</classsynopsisinfo>
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.parallel-future')/db:refentry/db:refsect1[@audience='resolution']/descendant::db:methodsynopsis[not(@role='procedural')])">
|
||||
<xi:fallback />
|
||||
<xi:fallback/>
|
||||
</xi:include>
|
||||
|
||||
<classsynopsisinfo role="comment">Состояние</classsynopsisinfo>
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.parallel-future')/db:refentry/db:refsect1[@audience='state']/descendant::db:methodsynopsis[not(@role='procedural')])">
|
||||
<xi:fallback />
|
||||
<xi:fallback/>
|
||||
</xi:include>
|
||||
|
||||
<classsynopsisinfo role="comment">Отмена</classsynopsisinfo>
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.parallel-future')/db:refentry/db:refsect1[@audience='cancellation']/descendant::db:methodsynopsis[not(@role='procedural')])">
|
||||
<xi:fallback />
|
||||
<xi:fallback/>
|
||||
</xi:include>
|
||||
|
||||
</classsynopsis>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: d0da6acae85277454b0f27f1fb208040173ec234 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
<reference xml:id="class.parallel-runtime" role="class" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<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.parallel-runtime" role="class">
|
||||
|
||||
<title>Класс parallel\Runtime</title>
|
||||
<titleabbrev>parallel\Runtime</titleabbrev>
|
||||
@@ -10,33 +10,33 @@
|
||||
|
||||
<section>
|
||||
<title>Объекты во временя выполнения</title>
|
||||
<para>
|
||||
<simpara>
|
||||
Каждая среда выполнения представляет собой один поток PHP, поток создаётся (и загружается) при создании.
|
||||
Затем поток ожидает, пока задачи будут запланированы: запланированные задачи будут выполняться FIFO,
|
||||
а затем поток возобновит ожидание, пока не будут запланированы другие задачи или пока он не будет закрыт,
|
||||
убит или уничтожен в соответствии с обычными правилами области видимости объектов PHP.
|
||||
</para>
|
||||
</simpara>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Когда среда выполнения уничтожается обычными правилами области видимости объектов PHP,
|
||||
она сначала выполняет все запланированные задачи и при этом блокирует добавление новых.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Начальная загрузка во время выполнения</title>
|
||||
<para>
|
||||
<simpara>
|
||||
Когда создаётся новая среда выполнения, она не разделяет код с потоком (или процессом), который её создал.
|
||||
Это означает, что в нём не загружены те же классы и функции, а также не установлен один и тот же автозагрузчик.
|
||||
В некоторых случаях желательна очень лёгкая среда выполнения, потому что задачи, которые будут запланированы,
|
||||
не нуждаются в доступе к коду в родительском потоке.
|
||||
В тех случаях, когда задачам нужен доступ к одному и тому же коду, достаточно установить автозагрузчик в качестве начальной загрузки.
|
||||
</para>
|
||||
</simpara>
|
||||
<note>
|
||||
<para>
|
||||
<simpara>
|
||||
Предварительная загрузка может использоваться вместе с параллельной, в этом случае предварительно загруженный код доступен без начальной загрузки.
|
||||
</para>
|
||||
</simpara>
|
||||
</note>
|
||||
</section>
|
||||
|
||||
@@ -58,17 +58,17 @@
|
||||
|
||||
<classsynopsisinfo role="comment">Создание</classsynopsisinfo>
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.parallel-runtime')/db:refentry/db:refsect1[@audience='create']/descendant::db:constructorsynopsis[not(@role='procedural')])">
|
||||
<xi:fallback />
|
||||
<xi:fallback/>
|
||||
</xi:include>
|
||||
|
||||
<classsynopsisinfo role="comment">Выполнение</classsynopsisinfo>
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.parallel-runtime')/db:refentry/db:refsect1[@audience='execute']/descendant::db:methodsynopsis[not(@role='procedural')])">
|
||||
<xi:fallback />
|
||||
<xi:fallback/>
|
||||
</xi:include>
|
||||
|
||||
<classsynopsisinfo role="comment">Присоединение</classsynopsisinfo>
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.parallel-runtime')/db:refentry/db:refsect1[@audience='join']/descendant::db:methodsynopsis[not(@role='procedural')])">
|
||||
<xi:fallback />
|
||||
<xi:fallback/>
|
||||
</xi:include>
|
||||
</classsynopsis>
|
||||
<!-- }}} -->
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 0997ae3510683f23a1d6dc675ddc0f689e411d90 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
<reference xml:id="class.parallel-sync" role="class" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<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.parallel-sync" role="class">
|
||||
|
||||
<title>Класс parallel\Sync</title>
|
||||
<titleabbrev>parallel\Sync</titleabbrev>
|
||||
@@ -9,15 +9,15 @@
|
||||
<partintro>
|
||||
<section>
|
||||
<title>Синхронизация низкого уровня</title>
|
||||
<para>
|
||||
<simpara>
|
||||
Класс <classname>parallel\Sync</classname> обеспечивает доступ к низкоуровневым примитивам синхронизации, мьютексам,
|
||||
условным переменным и позволяет реализовать семафоры.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
<para>
|
||||
<simpara>
|
||||
Синхронизация для большинства приложений намного лучше реализуется с использованием каналов,
|
||||
однако в некоторых случаях авторы низкоуровневого кода могут счесть полезным иметь доступ к этим механизмам более низкого уровня.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
</section>
|
||||
|
||||
@@ -39,17 +39,17 @@
|
||||
|
||||
<classsynopsisinfo role="comment">Конструктор</classsynopsisinfo>
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.parallel-sync')/db:refentry/db:refsect1[@audience='construction']/descendant::db:methodsynopsis[not(@role='procedural')])">
|
||||
<xi:fallback />
|
||||
<xi:fallback/>
|
||||
</xi:include>
|
||||
|
||||
<classsynopsisinfo role="comment">Доступ</classsynopsisinfo>
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.parallel-sync')/db:refentry/db:refsect1[@audience='access']/descendant::db:methodsynopsis[not(@role='procedural')])">
|
||||
<xi:fallback />
|
||||
<xi:fallback/>
|
||||
</xi:include>
|
||||
|
||||
<classsynopsisinfo role="comment">Синхронизация</classsynopsisinfo>
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.parallel-sync')/db:refentry/db:refsect1[@audience='synchronization']/descendant::db:methodsynopsis[not(@role='procedural')])">
|
||||
<xi:fallback />
|
||||
<xi:fallback/>
|
||||
</xi:include>
|
||||
|
||||
</classsynopsis>
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 52bf027d4cb01fee7d4e33095d3c5ecd6f76fff1 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="parallel-channel.close" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="parallel-channel.close">
|
||||
<refnamediv>
|
||||
<refname>parallel\Channel::close</refname>
|
||||
<refpurpose>Закрытие</refpurpose>
|
||||
@@ -12,20 +11,20 @@
|
||||
&reftitle.description;
|
||||
<methodsynopsis>
|
||||
<modifier>public</modifier> <type>void</type><methodname>parallel\Channel::close</methodname>
|
||||
<void />
|
||||
<void/>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Закрывает канал.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="exceptions">
|
||||
<title>Ошибки</title>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>parallel\Channel\Error\Closed</type>, если канал уже был закрыт.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
</refsect1>
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: d9ecfba6ad07e4e0b1b13ed1f0592f09d2e2f5c9 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="parallel-channel.construct" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="parallel-channel.construct">
|
||||
<refnamediv>
|
||||
<refname>parallel\Channel::__construct</refname>
|
||||
<refpurpose>Конструктор класса Channel</refpurpose>
|
||||
@@ -14,16 +13,16 @@
|
||||
<modifier>public</modifier> <methodname>parallel\Channel::__construct</methodname>
|
||||
<void/>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Создаёт анонимный небуферизованный канал
|
||||
</para>
|
||||
</simpara>
|
||||
<methodsynopsis>
|
||||
<modifier>public</modifier> <methodname>parallel\Channel::__construct</methodname>
|
||||
<methodparam><type>int</type><parameter>capacity</parameter></methodparam>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Создаёт анонимный буферизованный канал с заданной ёмкостью.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
</refsect1>
|
||||
|
||||
@@ -33,9 +32,9 @@
|
||||
<varlistentry>
|
||||
<term><parameter>capacity</parameter></term>
|
||||
<listitem>
|
||||
<para>
|
||||
<simpara>
|
||||
Может быть <type>Channel::Infinite</type> или положительным целым числом.
|
||||
</para>
|
||||
</simpara>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 52bf027d4cb01fee7d4e33095d3c5ecd6f76fff1 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="parallel-channel.make" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="parallel-channel.make">
|
||||
<refnamediv>
|
||||
<refname>parallel\Channel::make</refname>
|
||||
<refpurpose>Доступ</refpurpose>
|
||||
@@ -14,17 +13,17 @@
|
||||
<modifier>public</modifier> <type>Channel</type><methodname>parallel\Channel::make</methodname>
|
||||
<methodparam><type>string</type><parameter>name</parameter></methodparam>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Создаёт небуферизованный канал с заданным именем
|
||||
</para>
|
||||
</simpara>
|
||||
<methodsynopsis>
|
||||
<modifier>public</modifier> <type>Channel</type><methodname>parallel\Channel::make</methodname>
|
||||
<methodparam><type>string</type><parameter>name</parameter></methodparam>
|
||||
<methodparam><type>int</type><parameter>capacity</parameter></methodparam>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Создаёт буферизованный канал с заданным именем и ёмкостью.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
</refsect1>
|
||||
|
||||
@@ -34,17 +33,17 @@
|
||||
<varlistentry>
|
||||
<term><parameter>name</parameter></term>
|
||||
<listitem>
|
||||
<para>
|
||||
<simpara>
|
||||
Имя канала.
|
||||
</para>
|
||||
</simpara>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><parameter>capacity</parameter></term>
|
||||
<listitem>
|
||||
<para>
|
||||
<simpara>
|
||||
Может быть <type>Channel::Infinite</type> или положительным целым числом
|
||||
</para>
|
||||
</simpara>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
@@ -53,9 +52,9 @@
|
||||
<refsect1 role="exceptions">
|
||||
<title>Ошибки</title>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>parallel\Channel\Error\Existence</type>, если канал уже существует.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
</refsect1>
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 52bf027d4cb01fee7d4e33095d3c5ecd6f76fff1 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="parallel-channel.open" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="parallel-channel.open">
|
||||
<refnamediv>
|
||||
<refname>parallel\Channel::open</refname>
|
||||
<refpurpose>Доступ</refpurpose>
|
||||
@@ -14,18 +13,18 @@
|
||||
<modifier>public</modifier> <type>Channel</type><methodname>parallel\Channel::open</methodname>
|
||||
<methodparam><type>string</type><parameter>name</parameter></methodparam>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Открывает канал с заданным именем
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="exceptions">
|
||||
<title>Ошибки</title>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>parallel\Channel\Error\Existence</type>, если канал не существует.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
</refsect1>
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 52bf027d4cb01fee7d4e33095d3c5ecd6f76fff1 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="parallel-channel.recv" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="parallel-channel.recv">
|
||||
<refnamediv>
|
||||
<refname>parallel\Channel::recv</refname>
|
||||
<refpurpose>Совместное использование</refpurpose>
|
||||
@@ -12,20 +11,20 @@
|
||||
&reftitle.description;
|
||||
<methodsynopsis>
|
||||
<modifier>public</modifier> <type>mixed</type><methodname>parallel\Channel::recv</methodname>
|
||||
<void />
|
||||
<void/>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Получает значение из этого канала
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="exceptions">
|
||||
<title>Ошибки</title>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>parallel\Channel\Error\Closed</type>, если канал закрыт.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
</refsect1>
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 52bf027d4cb01fee7d4e33095d3c5ecd6f76fff1 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="parallel-channel.send" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="parallel-channel.send">
|
||||
<refnamediv>
|
||||
<refname>parallel\Channel::send</refname>
|
||||
<refpurpose>Совместное использование</refpurpose>
|
||||
@@ -14,23 +13,23 @@
|
||||
<modifier>public</modifier> <type>void</type><methodname>parallel\Channel::send</methodname>
|
||||
<methodparam><type>mixed</type><parameter>value</parameter></methodparam>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Отправляет заданное значение в канал
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="exceptions">
|
||||
<title>Ошибки</title>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>parallel\Channel\Error\Closed</type>, если канал закрыт.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>parallel\Channel\Error\IllegalValue</type>, если значение недопустимо.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
</refsect1>
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 52bf027d4cb01fee7d4e33095d3c5ecd6f76fff1 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="parallel-events.addchannel" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="parallel-events.addchannel">
|
||||
<refnamediv>
|
||||
<refname>parallel\Events::addChannel</refname>
|
||||
<refpurpose>Цели</refpurpose>
|
||||
@@ -14,17 +13,17 @@
|
||||
<modifier>public</modifier> <type>void</type><methodname>parallel\Events::addChannel</methodname>
|
||||
<methodparam><type>parallel\Channel</type><parameter>channel</parameter></methodparam>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Следит за событиями в заданном <parameter>channel</parameter>
|
||||
</para>
|
||||
</simpara>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="exceptions">
|
||||
<title>Ошибки</title>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>parallel\Events\Error\Existence</type>, если канал уже был добавлен.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
</refsect1>
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 52bf027d4cb01fee7d4e33095d3c5ecd6f76fff1 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="parallel-events.addfuture" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="parallel-events.addfuture">
|
||||
<refnamediv>
|
||||
<refname>parallel\Events::addFuture</refname>
|
||||
<refpurpose>Цели</refpurpose>
|
||||
@@ -15,17 +14,17 @@
|
||||
<methodparam><type>string</type><parameter>name</parameter></methodparam>
|
||||
<methodparam><type>parallel\Future</type><parameter>future</parameter></methodparam>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Следит за событиями в заданном <parameter>future</parameter>
|
||||
</para>
|
||||
</simpara>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="exceptions">
|
||||
<title>Ошибки</title>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>parallel\Events\Error\Existence</type>, если цель с данным именем уже была добавлена.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
</refsect1>
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 5d927c376e2d53433ff435eea53e546b51d9834b Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="parallel-events.poll" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="parallel-events.poll">
|
||||
<refnamediv>
|
||||
<refname>parallel\Events::poll</refname>
|
||||
<refpurpose>Опрос</refpurpose>
|
||||
@@ -12,32 +11,32 @@
|
||||
&reftitle.description;
|
||||
<methodsynopsis>
|
||||
<modifier>public</modifier> <type class="union"><type>parallel\Events\Event</type><type>null</type></type><methodname>parallel\Events::poll</methodname>
|
||||
<void />
|
||||
<void/>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Опрашивает для следующего события
|
||||
</para>
|
||||
</simpara>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="returnvalues">
|
||||
&reftitle.returnvalues;
|
||||
<para>
|
||||
<simpara>
|
||||
Если целей не осталось, возвращается &null;.
|
||||
</para>
|
||||
<para>
|
||||
</simpara>
|
||||
<simpara>
|
||||
Если это будет неблокирующий цикл и произойдёт блокировка, будет возвращено значение &null;.
|
||||
</para>
|
||||
<para>
|
||||
</simpara>
|
||||
<simpara>
|
||||
В противном случае <classname>parallel\Events\Event</classname> возвращает описание события.
|
||||
</para>
|
||||
</simpara>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="exceptions">
|
||||
<title>Ошибки</title>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>parallel\Events\Error\Timeout</type>, если время ожидания использовано и достигнуто.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
</refsect1>
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 52bf027d4cb01fee7d4e33095d3c5ecd6f76fff1 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="parallel-events.remove" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="parallel-events.remove">
|
||||
<refnamediv>
|
||||
<refname>parallel\Events::remove</refname>
|
||||
<refpurpose>Цели</refpurpose>
|
||||
@@ -14,17 +13,17 @@
|
||||
<modifier>public</modifier> <type>void</type><methodname>parallel\Events::remove</methodname>
|
||||
<methodparam><type>string</type><parameter>target</parameter></methodparam>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Удаляет заданный <parameter>target</parameter>
|
||||
</para>
|
||||
</simpara>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="exceptions">
|
||||
<title>Ошибки</title>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>parallel\Events\Error\Existence</type>, если цель с указанным именем не найдена.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
</refsect1>
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 5d927c376e2d53433ff435eea53e546b51d9834b Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="parallel-events.setblocking" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="parallel-events.setblocking">
|
||||
<refnamediv>
|
||||
<refname>parallel\Events::setBlocking</refname>
|
||||
<refpurpose>Поведение</refpurpose>
|
||||
@@ -10,33 +9,33 @@
|
||||
|
||||
<refsect1 role="description" audience="behaviour">
|
||||
&reftitle.description;
|
||||
<para>
|
||||
<simpara>
|
||||
По умолчанию, когда опрашиваются события, блокировка будет происходить (на уровне PHP) до тех пор, пока не будет возвращено первое событие:
|
||||
установка режима блокировки в &false; приведёт к тому, что опрос вернёт управление, если первая опрошенная цель не готова.
|
||||
</para>
|
||||
<para>
|
||||
</simpara>
|
||||
<simpara>
|
||||
Отличается от установки времени ожидания 0 с помощью <methodname>parallel\Events::setTimeout</methodname>, поскольку время ожидания 0,
|
||||
хотя и разрешено, выбросит исключение, которое может быть чрезвычайно медленным или расточительным,
|
||||
если действительно необходимо неблокирующее поведение.
|
||||
</para>
|
||||
<para>
|
||||
</simpara>
|
||||
<simpara>
|
||||
Неблокирующий цикл влияет на возвращаемое значение <methodname>parallel\Events::poll</methodname>, так что оно может быть &null; до того, как все события будут обработаны.
|
||||
</para>
|
||||
</simpara>
|
||||
<methodsynopsis>
|
||||
<modifier>public</modifier> <type>void</type><methodname>parallel\Events::setBlocking</methodname>
|
||||
<methodparam><type>bool</type><parameter>blocking</parameter></methodparam>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Устанавливает режим блокировки
|
||||
</para>
|
||||
</simpara>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="exceptions">
|
||||
<title>Ошибки</title>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>parallel\Events\Error</type>, если для цикла установлено время ожидания.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
</refsect1>
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: d9ecfba6ad07e4e0b1b13ed1f0592f09d2e2f5c9 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="parallel-events.setinput" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="parallel-events.setinput">
|
||||
<refnamediv>
|
||||
<refname>parallel\Events::setInput</refname>
|
||||
<refpurpose>Вход</refpurpose>
|
||||
@@ -14,9 +13,9 @@
|
||||
<modifier>public</modifier> <type>void</type><methodname>parallel\Events::setInput</methodname>
|
||||
<methodparam><type>Input</type><parameter>input</parameter></methodparam>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Устанавливает <parameter>input</parameter> для этого цикла событий
|
||||
</para>
|
||||
</simpara>
|
||||
</refsect1>
|
||||
|
||||
</refentry>
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 5d927c376e2d53433ff435eea53e546b51d9834b Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="parallel-events.settimeout" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="parallel-events.settimeout">
|
||||
<refnamediv>
|
||||
<refname>parallel\Events::setTimeout</refname>
|
||||
<refpurpose>Поведение</refpurpose>
|
||||
@@ -10,28 +9,28 @@
|
||||
|
||||
<refsect1 role="description" audience="behaviour">
|
||||
&reftitle.description;
|
||||
<para>
|
||||
<simpara>
|
||||
По умолчанию при опросе событий происходит блокировка (на уровне PHP) до тех пор, пока не будет возвращено первое событие:
|
||||
установка времени ожидания приводит к выбрасыванию исключения при превышении времени ожидания.
|
||||
</para>
|
||||
<para>
|
||||
</simpara>
|
||||
<simpara>
|
||||
Отличается от установки режима блокировки в &false; с помощью <methodname>parallel\Events::setBlocking</methodname>, который не выбрасывает исключение.
|
||||
</para>
|
||||
</simpara>
|
||||
<methodsynopsis>
|
||||
<modifier>public</modifier> <type>void</type><methodname>parallel\Events::setTimeout</methodname>
|
||||
<methodparam><type>int</type><parameter>timeout</parameter></methodparam>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Устанавливает время ожидания в микросекундах
|
||||
</para>
|
||||
</simpara>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="exceptions">
|
||||
<title>Ошибки</title>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>parallel\Events\Error</type>, если цикл не блокируется.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
</refsect1>
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 52bf027d4cb01fee7d4e33095d3c5ecd6f76fff1 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="parallel-future.cancel" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="parallel-future.cancel">
|
||||
<refnamediv>
|
||||
<refname>parallel\Future::cancel</refname>
|
||||
<refpurpose>Прекращение</refpurpose>
|
||||
@@ -12,34 +11,34 @@
|
||||
&reftitle.description;
|
||||
<methodsynopsis>
|
||||
<modifier>public</modifier> <type>bool</type><methodname>parallel\Future::cancel</methodname>
|
||||
<void />
|
||||
<void/>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Пытается прервать задание.
|
||||
</para>
|
||||
</simpara>
|
||||
<note>
|
||||
<para>
|
||||
<simpara>
|
||||
Если задача запущена, она будет прервана.
|
||||
</para>
|
||||
</simpara>
|
||||
</note>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выполняющиеся внутренние вызовы функций не могут быть прерваны.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="exceptions">
|
||||
<title>Исключения</title>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>parallel\Future\Error\Killed</type>, если <type>parallel\Runtime</type> выполнение задачи было прервано.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>parallel\Future\Error\Cancelled</type>, если задача была уже прервана.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
</refsect1>
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: d9ecfba6ad07e4e0b1b13ed1f0592f09d2e2f5c9 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="parallel-future.cancelled" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="parallel-future.cancelled">
|
||||
<refnamediv>
|
||||
<refname>parallel\Future::cancelled</refname>
|
||||
<refpurpose>Определение состояния</refpurpose>
|
||||
@@ -12,11 +11,11 @@
|
||||
&reftitle.description;
|
||||
<methodsynopsis>
|
||||
<modifier>public</modifier> <type>bool</type><methodname>parallel\Future::cancelled</methodname>
|
||||
<void />
|
||||
<void/>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Указывает, была ли задача отменена.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
</refsect1>
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: f0a2fee71b120f8afdef2aa7967f4f678f954518 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="parallel-future.done" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="parallel-future.done">
|
||||
<refnamediv>
|
||||
<refname>parallel\Future::done</refname>
|
||||
<refpurpose>Определение состояния</refpurpose>
|
||||
@@ -12,11 +11,11 @@
|
||||
&reftitle.description;
|
||||
<methodsynopsis>
|
||||
<modifier>public</modifier> <type>bool</type><methodname>parallel\Future::done</methodname>
|
||||
<void />
|
||||
<void/>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Указывает, выполнена ли задача
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
</refsect1>
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 52bf027d4cb01fee7d4e33095d3c5ecd6f76fff1 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="parallel-future.value" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="parallel-future.value">
|
||||
<refnamediv>
|
||||
<refname>parallel\Future::value</refname>
|
||||
<refpurpose>Разрешение</refpurpose>
|
||||
@@ -12,39 +11,39 @@
|
||||
&reftitle.description;
|
||||
<methodsynopsis>
|
||||
<modifier>public</modifier> <type>mixed</type><methodname>parallel\Future::value</methodname>
|
||||
<void />
|
||||
<void/>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Возвращает (и при необходимости дожидается) возврата из задания.
|
||||
</para>
|
||||
</simpara>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="exceptions">
|
||||
<title>Исключения</title>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>parallel\Future\Error</type>, если ожидание не удалось (внутренняя ошибка).
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>parallel\Future\Error\Killed</type>, если <type>parallel\Runtime</type> выполнение задачи было прервано.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>parallel\Future\Error\Cancelled</type>, если задача была отменена.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>parallel\Future\Error\Foreign</type>, если задача вызвала нераспознанное неперехваченное исключение.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>Throwable</type>, не пойманные в задаче.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
</refsect1>
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 5d927c376e2d53433ff435eea53e546b51d9834b Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="parallel-events-input.add" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="parallel-events-input.add">
|
||||
<refnamediv>
|
||||
<refname>parallel\Events\Input::add</refname>
|
||||
<refpurpose>Входы</refpurpose>
|
||||
@@ -15,22 +14,22 @@
|
||||
<methodparam><type>string</type><parameter>target</parameter></methodparam>
|
||||
<methodparam><type>mixed</type><parameter>value</parameter></methodparam>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Устанавливает вход для заданной цели
|
||||
</para>
|
||||
</simpara>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="exceptions">
|
||||
<title>Ошибки</title>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>parallel\Events\Input\Error\Existence</type>, если вход для цели уже существует.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>parallel\Events\Input\Error\IllegalValue</type>, если значение недопустимо (&object;, &null;).
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
</refsect1>
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: d9ecfba6ad07e4e0b1b13ed1f0592f09d2e2f5c9 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="parallel-events-input.clear" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="parallel-events-input.clear">
|
||||
<refnamediv>
|
||||
<refname>parallel\Events\Input::clear</refname>
|
||||
<refpurpose>Входы</refpurpose>
|
||||
@@ -12,11 +11,11 @@
|
||||
&reftitle.description;
|
||||
<methodsynopsis>
|
||||
<modifier>public</modifier> <type>void</type><methodname>parallel\Events\Input::clear</methodname>
|
||||
<void />
|
||||
<void/>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Удаляет ввод для всех целей
|
||||
</para>
|
||||
</simpara>
|
||||
</refsect1>
|
||||
|
||||
</refentry>
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 52bf027d4cb01fee7d4e33095d3c5ecd6f76fff1 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="parallel-events-input.remove" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="parallel-events-input.remove">
|
||||
<refnamediv>
|
||||
<refname>parallel\Events\Input::remove</refname>
|
||||
<refpurpose>Входы</refpurpose>
|
||||
@@ -14,17 +13,17 @@
|
||||
<modifier>public</modifier> <type>void</type><methodname>parallel\Events\Input::remove</methodname>
|
||||
<methodparam><type>string</type><parameter>target</parameter></methodparam>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Удаляет вход для данной цели
|
||||
</para>
|
||||
</simpara>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="exceptions">
|
||||
<title>Ошибки</title>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>parallel\Events\Input\Error\Existence</type>, если вход для цели не существует.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
</refsect1>
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 52bf027d4cb01fee7d4e33095d3c5ecd6f76fff1 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="parallel-runtime.close" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="parallel-runtime.close">
|
||||
<refnamediv>
|
||||
<refname>parallel\Runtime::close</refname>
|
||||
<refpurpose>Изящное соединение во время выполнения</refpurpose>
|
||||
@@ -12,24 +11,24 @@
|
||||
&reftitle.description;
|
||||
<methodsynopsis>
|
||||
<modifier>public</modifier> <type>void</type><methodname>parallel\Runtime::close</methodname>
|
||||
<void />
|
||||
<void/>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Запрашивает завершение работы среды выполнения.
|
||||
</para>
|
||||
</simpara>
|
||||
<note>
|
||||
<para>
|
||||
<simpara>
|
||||
Запланированные к выполнению задачи будут выполнены до завершения работы.
|
||||
</para>
|
||||
</simpara>
|
||||
</note>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="exceptions">
|
||||
<title>Ошибки</title>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>parallel\Runtime\Error\Closed</type>, если <type>Runtime</type> уже был закрыт.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
</refsect1>
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 52bf027d4cb01fee7d4e33095d3c5ecd6f76fff1 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="parallel-runtime.construct" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="parallel-runtime.construct">
|
||||
<refnamediv>
|
||||
<refname>parallel\Runtime::__construct</refname>
|
||||
<refpurpose>Конструктор класса Runtime</refpurpose>
|
||||
@@ -12,18 +11,18 @@
|
||||
&reftitle.description;
|
||||
<constructorsynopsis>
|
||||
<modifier>public</modifier> <methodname>parallel\Runtime::__construct</methodname>
|
||||
<void />
|
||||
<void/>
|
||||
</constructorsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Создаёт новую среду выполнения без начальной загрузки.
|
||||
</para>
|
||||
</simpara>
|
||||
<constructorsynopsis>
|
||||
<modifier>public</modifier> <methodname>parallel\Runtime::__construct</methodname>
|
||||
<methodparam><type>string</type><parameter>bootstrap</parameter></methodparam>
|
||||
</constructorsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Создаёт новую среду выполнения с начальной загрузкой.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
</refsect1>
|
||||
|
||||
@@ -33,9 +32,9 @@
|
||||
<varlistentry>
|
||||
<term><parameter>bootstrap</parameter></term>
|
||||
<listitem>
|
||||
<para>
|
||||
<simpara>
|
||||
Расположение файла начальной загрузки, обычно это автозагрузчик.
|
||||
</para>
|
||||
</simpara>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
@@ -44,14 +43,14 @@
|
||||
<refsect1 role="exceptions">
|
||||
<title>Ошибки</title>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>parallel\Runtime\Error</type>, если поток не может быть создан.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>parallel\Runtime\Bootstrap</type>, если начальная загрузка завершилась с ошибкой.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
</refsect1>
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 52bf027d4cb01fee7d4e33095d3c5ecd6f76fff1 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="parallel-runtime.kill" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="parallel-runtime.kill">
|
||||
<refnamediv>
|
||||
<refname>parallel\Runtime::kill</refname>
|
||||
<refpurpose>Соединение во время выполнения</refpurpose>
|
||||
@@ -12,29 +11,29 @@
|
||||
&reftitle.description;
|
||||
<methodsynopsis>
|
||||
<modifier>public</modifier> <type>void</type><methodname>parallel\Runtime::kill</methodname>
|
||||
<void />
|
||||
<void/>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Пытается принудительно завершить работу среды выполнения.
|
||||
</para>
|
||||
</simpara>
|
||||
<note>
|
||||
<para>
|
||||
<simpara>
|
||||
Запланированные к выполнению задачи не будут выполнены, текущая задача будет прервана.
|
||||
</para>
|
||||
</simpara>
|
||||
</note>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выполняющиеся внутренние вызовы функций не могут быть прерваны.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="exceptions">
|
||||
<title>Ошибки</title>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>parallel\Runtime\Error\Closed</type>, если <type>Runtime</type> уже был закрыт.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
</refsect1>
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 41445b3d771660805270f52adf0e421aa20f12ab Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="parallel-runtime.run" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="parallel-runtime.run">
|
||||
<refnamediv>
|
||||
<refname>parallel\Runtime::run</refname>
|
||||
<refpurpose>Выполнение</refpurpose>
|
||||
@@ -14,17 +13,17 @@
|
||||
<modifier>public</modifier> <type class="union"><type>Future</type><type>null</type></type><methodname>parallel\Runtime::run</methodname>
|
||||
<methodparam><type>Closure</type><parameter>task</parameter></methodparam>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Планирует параллельное выполнение <parameter>task</parameter>.
|
||||
</para>
|
||||
</simpara>
|
||||
<methodsynopsis>
|
||||
<modifier>public</modifier> <type class="union"><type>Future</type><type>null</type></type><methodname>parallel\Runtime::run</methodname>
|
||||
<methodparam><type>Closure</type><parameter>task</parameter></methodparam>
|
||||
<methodparam><type>array</type><parameter>argv</parameter></methodparam>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Планирует параллельное выполнение <parameter>task</parameter>, передавая <parameter>argv</parameter> во время выполнения.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
</refsect1>
|
||||
|
||||
@@ -34,17 +33,17 @@
|
||||
<varlistentry>
|
||||
<term><parameter>task</parameter></term>
|
||||
<listitem>
|
||||
<para>
|
||||
<simpara>
|
||||
Замыкание (<classname>Closure</classname>) со специфическими характеристиками.
|
||||
</para>
|
||||
</simpara>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><parameter>argv</parameter></term>
|
||||
<listitem>
|
||||
<para>
|
||||
<simpara>
|
||||
Массив (<type>array</type>) аргументов с конкретными характеристиками, которые будут переданы <parameter>task</parameter> во время выполнения.
|
||||
</para>
|
||||
</simpara>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
@@ -70,14 +69,14 @@
|
||||
</simplelist>
|
||||
</para>
|
||||
<note>
|
||||
<para>
|
||||
<simpara>
|
||||
Вложенные замыкания могут использовать yield или передачу значения по ссылке, но не должны содержать объявления классов или именованных функций.
|
||||
</para>
|
||||
</simpara>
|
||||
</note>
|
||||
<note>
|
||||
<para>
|
||||
<simpara>
|
||||
Никакие инструкции не запрещены в файлах, которые может включать задача.
|
||||
</para>
|
||||
</simpara>
|
||||
</note>
|
||||
</refsect1>
|
||||
|
||||
@@ -91,73 +90,73 @@
|
||||
<member>содержать внутренние объекты (смотрите примечания)</member>
|
||||
</simplelist>
|
||||
<note>
|
||||
<para>
|
||||
<simpara>
|
||||
В случае ресурсов файлового потока ресурс будет преобразован в файловый дескриптор и передан как целое число (<type>int</type>),
|
||||
где это возможно, не поддерживается в Windows.
|
||||
</para>
|
||||
</simpara>
|
||||
</note>
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="object-characteristics">
|
||||
<title>Примечания к внутренним объектам</title>
|
||||
<para>
|
||||
<simpara>
|
||||
Внутренние объекты обычно используют настраиваемую структуру, которую нельзя безопасно скопировать по значению,
|
||||
в PHP в настоящее время отсутствует механизм для этого (без сериализации), и поэтому могут использоваться только объекты,
|
||||
которые не используют настраиваемую структуру.
|
||||
</para>
|
||||
<para>
|
||||
</simpara>
|
||||
<simpara>
|
||||
Некоторые внутренние объекты не используют настраиваемую структуру, например, <classname>parallel\Events\Event</classname> и поэтому могут использоваться совместно.
|
||||
</para>
|
||||
<para>
|
||||
</simpara>
|
||||
<simpara>
|
||||
Замыкания - это особый вид внутреннего объекта, который поддерживает копирование по значению, поэтому может использоваться совместно.
|
||||
</para>
|
||||
<para>
|
||||
</simpara>
|
||||
<simpara>
|
||||
Каналы играют ключевую роль в написании параллельного кода и при необходимости поддерживают одновременный доступ и выполнение, поэтому могут использоваться совместно.
|
||||
</para>
|
||||
</simpara>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Пользовательский класс, расширяющий внутренний класс, может использовать настраиваемую структуру, определённую внутренним классом,
|
||||
и в этом случае они не могут быть безопасно скопированы по значению и поэтому не могут использоваться совместно.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="returnvalues">
|
||||
&reftitle.returnvalues;
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Нельзя игнорировать возвращаемый <type>parallel\Future</type>, если задача содержит оператор return или throw.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="exceptions">
|
||||
<title>Исключения</title>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>parallel\Runtime\Error\Closed</type>, если <type>parallel\Runtime</type> был закрыт.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>parallel\Runtime\Error\IllegalFunction</type>, если <parameter>task</parameter> является замыканием, созданным из внутренней функции.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>parallel\Runtime\Error\IllegalInstruction</type>, если <parameter>task</parameter> содержит недопустимые инструкции.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>parallel\Runtime\Error\IllegalParameter</type>, если <parameter>task</parameter> принимает или <parameter>argv</parameter> содержит недопустимые переменные.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>parallel\Runtime\Error\IllegalReturn</type>, если <parameter>task</parameter> возвращается некорректно.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
</refsect1>
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 52bf027d4cb01fee7d4e33095d3c5ecd6f76fff1 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="parallel-sync.construct" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="parallel-sync.construct">
|
||||
<refnamediv>
|
||||
<refname>parallel\Sync::__construct</refname>
|
||||
<refpurpose>Конструктор класса</refpurpose>
|
||||
@@ -12,28 +11,28 @@
|
||||
&reftitle.description;
|
||||
<methodsynopsis>
|
||||
<modifier>public</modifier> <methodname>parallel\Sync::__construct</methodname>
|
||||
<void />
|
||||
<void/>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Создаёт новый объект синхронизации без значения.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
<methodsynopsis>
|
||||
<modifier>public</modifier> <methodname>parallel\Sync::__construct</methodname>
|
||||
<methodparam><type>scalar</type><parameter>value</parameter></methodparam>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Создаёт новый объект синхронизации, содержащий заданное скалярное значение.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="exceptions">
|
||||
<title>Ошибки</title>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>parallel\Sync\Error\IllegalValue</type>, если <parameter>value</parameter> не является скалярным значением.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
</refsect1>
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: d9ecfba6ad07e4e0b1b13ed1f0592f09d2e2f5c9 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="parallel-sync.get" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="parallel-sync.get">
|
||||
<refnamediv>
|
||||
<refname>parallel\Sync::get</refname>
|
||||
<refpurpose>Доступ</refpurpose>
|
||||
@@ -12,11 +11,11 @@
|
||||
&reftitle.description;
|
||||
<methodsynopsis>
|
||||
<modifier>public</modifier> <type>scalar</type><methodname>parallel\Sync::get</methodname>
|
||||
<void />
|
||||
<void/>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Автоматически возвращает значение объектов синхронизации.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
</refsect1>
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: d9ecfba6ad07e4e0b1b13ed1f0592f09d2e2f5c9 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="parallel-sync.invoke" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="parallel-sync.invoke">
|
||||
<refnamediv>
|
||||
<refname>parallel\Sync::__invoke</refname>
|
||||
<refpurpose>Синхронизация</refpurpose>
|
||||
@@ -14,9 +13,9 @@
|
||||
<modifier>public</modifier> <methodname>parallel\Sync::__invoke</methodname>
|
||||
<methodparam><type>callable</type><parameter>critical</parameter></methodparam>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Должен быть включён исключительно в критический код.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
</refsect1>
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: d9ecfba6ad07e4e0b1b13ed1f0592f09d2e2f5c9 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="parallel-sync.notify" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="parallel-sync.notify">
|
||||
<refnamediv>
|
||||
<refname>parallel\Sync::notify</refname>
|
||||
<refpurpose>Синхронизация</refpurpose>
|
||||
@@ -14,9 +13,9 @@
|
||||
<modifier>public</modifier> <methodname>parallel\Sync::notify</methodname>
|
||||
<methodparam choice="opt"><type>bool</type><parameter>all</parameter></methodparam>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Уведомляет один (по умолчанию) или все потоки, ожидающие объекта синхронизации.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
</refsect1>
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 52bf027d4cb01fee7d4e33095d3c5ecd6f76fff1 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="parallel-sync.set" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="parallel-sync.set">
|
||||
<refnamediv>
|
||||
<refname>parallel\Sync::set</refname>
|
||||
<refpurpose>Доступ</refpurpose>
|
||||
@@ -14,18 +13,18 @@
|
||||
<modifier>public</modifier> <methodname>parallel\Sync::set</methodname>
|
||||
<methodparam><type>scalar</type><parameter>value</parameter></methodparam>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Атомарно устанавливает значение объекта синхронизации.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="exceptions">
|
||||
<title>Ошибки</title>
|
||||
<warning>
|
||||
<para>
|
||||
<simpara>
|
||||
Выбрасывает <type>parallel\Sync\Error\IllegalValue</type>, если <parameter>value</parameter> не является скалярным значением.
|
||||
</para>
|
||||
</simpara>
|
||||
</warning>
|
||||
</refsect1>
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: d9ecfba6ad07e4e0b1b13ed1f0592f09d2e2f5c9 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="parallel-sync.wait" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="parallel-sync.wait">
|
||||
<refnamediv>
|
||||
<refname>parallel\Sync::wait</refname>
|
||||
<refpurpose>Синхронизация</refpurpose>
|
||||
@@ -12,11 +11,11 @@
|
||||
&reftitle.description;
|
||||
<methodsynopsis>
|
||||
<modifier>public</modifier> <methodname>parallel\Sync::wait</methodname>
|
||||
<void />
|
||||
<void/>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<simpara>
|
||||
Ожидает уведомления об этом объекте синхронизации.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
</refsect1>
|
||||
|
||||
|
||||
@@ -1,56 +1,56 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: c7e29d3ab5328b52f83edb88bde973e211a37659 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
<chapter xml:id="philosophy.parallel" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="philosophy.parallel">
|
||||
<title>Философия</title>
|
||||
<para>
|
||||
<simpara>
|
||||
Раздел содержит основные принципы, важные для написания параллельного кода и некоторые подробности о внутренней реализации parallel.
|
||||
</para>
|
||||
</simpara>
|
||||
<simplesect role="sharing">
|
||||
<title>Не общайтесь, разделяя память; вместо этого поделитесь памятью, с помощью общения.</title>
|
||||
<para>
|
||||
<simpara>
|
||||
Эта философия, которой придерживается parallel, берёт своё начало из Go, одной из самых популярных из используемых платформ для написания параллельного кода в настоящее время.
|
||||
Программисты на Go должны упорно трудиться, чтобы соответствовать этому идеалу: PHP и параллельный интерфейс делают всю тяжёлую работу за программиста,
|
||||
причём по умолчанию.
|
||||
</para>
|
||||
<para>
|
||||
</simpara>
|
||||
<simpara>
|
||||
В традиционных моделях потоковой передачи, встречающихся в других языках, потоки обычно обмениваются данными друг с другом только благодаря тому факту, что они работают в одном и том же адресном пространстве.
|
||||
Программист должен использовать взаимное исключение, переменные условия и другие низкоуровневые примитивы потоковой передачи или синхронизации, чтобы обеспечить надлежащую передачу состояния и согласованность.
|
||||
</para>
|
||||
<para>
|
||||
</simpara>
|
||||
<simpara>
|
||||
Когда обычная модель инвертирована, это означает, что потоки совместно используют память только в результате обмена данными (например, переменная передаётся по каналу).
|
||||
</para>
|
||||
<para>
|
||||
</simpara>
|
||||
<simpara>
|
||||
Когда parallel передаёт переменную из одного потока в другой любым способом - аргументами задачи, возвратом через Future и каналами - она передаётся по значению.
|
||||
Во всех случаях, кроме небуферизованных каналов, переменная также буферизуется, поэтому она не может измениться (или быть уничтожена) до того, как она будет использована в любом потоке,
|
||||
в который передаётся переменная. Небуферизованное чтение по каналу - единственный случай, когда поток непосредственно читает память,
|
||||
выделенную другим потоком, это можно сделать безопасно, потому что поток, владеющий памятью, ожидает завершения чтения, прежде чем он сможет продолжить управлять им, и поток, которому не принадлежит память, читает по значению.
|
||||
Когда оба потока продолжают работу, они больше не разделяют память.
|
||||
</para>
|
||||
<para>
|
||||
</simpara>
|
||||
<simpara>
|
||||
Это значительно упрощает написание параллельного кода и рассуждения о нём по сравнению с традиционной моделью многопоточности.
|
||||
Это означает, что программисту не нужно учитывать, что потоки могут одновременно управлять данными, потому что это невозможно.
|
||||
</para>
|
||||
<para>
|
||||
</simpara>
|
||||
<simpara>
|
||||
Это также делает PHP идеальной платформой для реализации API параллельного кода на основе CSP (передача сообщений по каналам),
|
||||
поскольку сам PHP ничего не разделяет - потоки PHP по умолчанию работают в собственном виртуальном адресном пространстве и поэтому могут совместно использовать память только путём обмена данными.
|
||||
</para>
|
||||
</simpara>
|
||||
</simplesect>
|
||||
<simplesect role="owning">
|
||||
<title>У данных должен быть окончательный единственный владелец</title>
|
||||
<para>
|
||||
<simpara>
|
||||
Приближаясь к модели CSP в первый раз, программист, разбирающийся в традиционной модели потоковой передачи,
|
||||
может обнаружить, что ищет параллельные структуры данных, потому что это то,
|
||||
что они тоже используют: они передают общие объекты для управления.
|
||||
</para>
|
||||
<para>
|
||||
</simpara>
|
||||
<simpara>
|
||||
Когда дело доходит до модели CSP, нет необходимости в том, чтобы структуры данных совместно использовались многими задачами и действительно,
|
||||
это проще, если это не так. Данные должны принадлежать одной задаче, изменения (или операции) в этой структуре данных должны передаваться по каналам
|
||||
и выполняться владельцем данных, успешное выполнение, ошибка или результат (состояние) изменения (или операции) передаётся обратно.
|
||||
</para>
|
||||
<para>
|
||||
</simpara>
|
||||
<simpara>
|
||||
Опять же, природа PHP ничего не разделяет и природа параллельного копирования по значению помогают программисту достичь этой цели, никакие данные не будут переданы случайно, только в результате обмена данными.
|
||||
</para>
|
||||
</simpara>
|
||||
</simplesect>
|
||||
</chapter>
|
||||
<!-- Keep this comment at the end of the file
|
||||
|
||||
@@ -1,46 +1,46 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: cd79fb394a828438dd73e32f53f0a2e96f3722b3 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
<chapter xml:id="parallel.setup" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="parallel.setup">
|
||||
<title>Установка</title>
|
||||
|
||||
<simplesect xml:id="parallel.requirements">
|
||||
&reftitle.required;
|
||||
<para>
|
||||
<simpara>
|
||||
Для работы модуля parallel требуется сборка PHP с поддержкой режима ZTS (Zend Thread Safety).
|
||||
Потокобезопасный режим включают при компиляции через ключ <option role="configure">--enable-zts</option>,
|
||||
а до PHP 8.0.0 на системах, которые отличаются от ОС Windows, — ключ <option role="configure">--enable-maintainer-zts</option>.
|
||||
</para>
|
||||
</simpara>
|
||||
<caution>
|
||||
<para>
|
||||
<simpara>
|
||||
Режим Zend Thread Safety нельзя включить после сборки; это вариант конфигурации во время сборки.
|
||||
</para>
|
||||
</simpara>
|
||||
</caution>
|
||||
<para>
|
||||
<simpara>
|
||||
Модуль parallel требуется собирать в системах, в которых работает заголовочный файл pthread.h стандарта
|
||||
реализации потоков POSIX Threads и ZTS-сборка PHP, включая системы Windows с библиотекой многопоточности
|
||||
проекта pthread-w32 компании Red Hat.
|
||||
</para>
|
||||
</simpara>
|
||||
</simplesect>
|
||||
|
||||
<simplesect xml:id="parallel.installation">
|
||||
&reftitle.install;
|
||||
<para>
|
||||
<simpara>
|
||||
Выпуски модуля parallel размещаются в репозитории PECL, а исходный код —
|
||||
на сайте <link xlink:href="&url.git.hub;krakjoe/parallel">GitHub</link>,
|
||||
Самый простой способ установки — обычный маршрут PECL:
|
||||
<link xlink:href="&url.pecl.package;parallel">&url.pecl.package;parallel</link>.
|
||||
</para>
|
||||
<para>
|
||||
</simpara>
|
||||
<simpara>
|
||||
Пользователям ОС Windows готовые двоичные файлы
|
||||
доступны на сайте репозитория <link xlink:href="&url.pecl.package;parallel">PECL</link>.
|
||||
</para>
|
||||
</simpara>
|
||||
<caution>
|
||||
<para>
|
||||
<simpara>
|
||||
Пользователям ОС Windows потребуется сделать дополнительный шаг
|
||||
и добавить файл <filename>pthreadVC<replaceable>?</replaceable>.dll</filename>,
|
||||
который распространяется вместе с выпусками Windows, в свою переменную окружения <envar>PATH</envar>.
|
||||
</para>
|
||||
</simpara>
|
||||
</caution>
|
||||
</simplesect>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user