mirror of
https://github.com/php/doc-ru.git
synced 2026-03-23 23:32:16 +01:00
135 lines
7.6 KiB
XML
135 lines
7.6 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
|
||
<!-- Reviewed: no -->
|
||
<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;
|
||
<simpara>
|
||
parallel - это модуль параллельного выполнения для PHP ≥ 7.2.0.
|
||
Начиная с parallel 1.2.0, требуется PHP ≥ 8.0.0.
|
||
</simpara>
|
||
<simpara>
|
||
Краткое описание основных понятий параллельных процессов описано ниже, более подробную информацию можно найти в этом разделе руководства.
|
||
</simpara>
|
||
<simplesect>
|
||
<title>Runtime</title>
|
||
<simpara>
|
||
<classname>parallel\Runtime</classname> представляет поток интерпретатора PHP. <classname>parallel\Runtime</classname> настроен с дополнительным файлом начальной загрузки, переданным в <methodname>parallel\Runtime::__construct</methodname>, обычно это автозагрузчик
|
||
или какая-либо другая процедура предварительной загрузки: файл начальной загрузки будет подключаться перед выполнением любой задачи.
|
||
</simpara>
|
||
<simpara>
|
||
После создания <classname>parallel\Runtime</classname> остаётся доступным до тех пор, пока он не будет закрыт, уничтожен или уничтожен обычными правилами области видимости объектов PHP.
|
||
<methodname>parallel\Runtime::run</methodname> позволяет программисту планировать задачи для параллельного выполнения.
|
||
У <classname>parallel\Runtime</classname> расписание FIFO, задачи будут выполняться в том порядке, в котором они запланированы.
|
||
</simpara>
|
||
</simplesect>
|
||
<simplesect>
|
||
<title>Функциональный API</title>
|
||
<simpara>
|
||
parallel реализует функциональный API более высокого уровня поверх <classname>parallel\Runtime</classname>, который обеспечивает единую точку входа функции для выполнения параллельного кода
|
||
с автоматическим планированием: <function>parallel\run</function>.
|
||
</simpara>
|
||
</simplesect>
|
||
<simplesect>
|
||
<title>Задача</title>
|
||
<para>
|
||
Задача - это просто замыкание (<classname>Closure</classname>), предназначенное для параллельного выполнения. <classname>Closure</classname> может содержать практически любую инструкцию, включая вложенные замыкания.
|
||
Однако есть некоторые инструкции, которые запрещены в задачах:
|
||
<itemizedlist>
|
||
<listitem>
|
||
<simpara>yield</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>use by-reference</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>declare class</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>declare named function</simpara>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</para>
|
||
<note>
|
||
<simpara>
|
||
Вложенные замыкания могут содержать "yield" или "use by-reference", но не должны содержать объявления классов или именованных функций.
|
||
</simpara>
|
||
</note>
|
||
<note>
|
||
<simpara>
|
||
Никакие инструкции не запрещены в файлах, которые может включать задача.
|
||
</simpara>
|
||
</note>
|
||
</simplesect>
|
||
<simplesect>
|
||
<title>Фьючерс</title>
|
||
<simpara>
|
||
<classname>parallel\Future</classname> используется для доступа к возвращаемому значению из задачи и предоставляет API для отмены задачи.
|
||
</simpara>
|
||
</simplesect>
|
||
<simplesect>
|
||
<title>Канал</title>
|
||
<simpara>
|
||
Задачу можно запланировать с аргументами, использовать переменные лексической области видимости (по значению) и вернуть значение (с помощью <classname>parallel\Future</classname>), но это разрешает только однонаправленную связь:
|
||
Это позволяет программисту отправлять данные и извлекать данные из задачи, но не допускают двунаправленную связь между задачами.
|
||
API <classname>parallel\Channel</classname> обеспечивает двунаправленную связь между задачами, <classname>parallel\Channel</classname> - это соединение типа сокета между задачами, которое программист может использовать для отправки и получения данных.
|
||
</simpara>
|
||
</simplesect>
|
||
<simplesect>
|
||
<title>События</title>
|
||
<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>,
|
||
описывающих произошедшие операции.
|
||
</simpara>
|
||
</simplesect>
|
||
<simplesect role="seealso">
|
||
&reftitle.seealso;
|
||
<simplelist>
|
||
<member><xref linkend="philosophy.parallel"/></member>
|
||
</simplelist>
|
||
</simplesect>
|
||
</preface>
|
||
|
||
&reference.parallel.setup;
|
||
&reference.parallel.philosophy;
|
||
&reference.parallel.functional;
|
||
&reference.parallel.parallel.runtime;
|
||
&reference.parallel.parallel.future;
|
||
&reference.parallel.parallel.channel;
|
||
&reference.parallel.parallel.events;
|
||
&reference.parallel.parallel.events.input;
|
||
&reference.parallel.parallel.events.event;
|
||
&reference.parallel.parallel.events.event.type;
|
||
|
||
&reference.parallel.parallel.sync;
|
||
<!--&reference.parallel.examples;-->
|
||
|
||
</book>
|
||
<!-- Keep this comment at the end of the file
|
||
Local variables:
|
||
mode: sgml
|
||
sgml-omittag:t
|
||
sgml-shorttag:t
|
||
sgml-minimize-attributes:nil
|
||
sgml-always-quote-attributes:t
|
||
sgml-indent-step:1
|
||
sgml-indent-data:t
|
||
indent-tabs-mode:nil
|
||
sgml-parent-document:nil
|
||
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
||
sgml-exposed-tags:nil
|
||
sgml-local-catalogs:nil
|
||
sgml-local-ecat-files:nil
|
||
End:
|
||
vim600: syn=xml fen fdm=syntax fdl=2 si
|
||
vim: et tw=78 syn=sgml
|
||
vi: ts=1 sw=1
|
||
-->
|