-
Notifications
You must be signed in to change notification settings - Fork 76
/
Copy pathbook.xml
134 lines (130 loc) · 7.57 KB
/
book.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: bbfa9738785f054752e6cb565cd0a58e71015bc6 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">
<?phpdoc extension-membership="pecl" ?>
<title>parallel</title>
<titleabbrev>parallel</titleabbrev>
<preface xml:id="intro.parallel">
&reftitle.intro;
<para>
parallel - это модуль параллельного выполнения для PHP ≥ 7.2.0.
Начиная с parallel 1.2.0, требуется PHP ≥ 8.0.0.
</para>
<para>
Краткое описание основных понятий параллельных процессов описано ниже, более подробную информацию можно найти в этом разделе руководства.
</para>
<simplesect>
<title>Runtime</title>
<para>
<classname>parallel\Runtime</classname> представляет поток интерпретатора PHP. <classname>parallel\Runtime</classname> настроен с дополнительным файлом начальной загрузки, переданным в <methodname>parallel\Runtime::__construct</methodname>, обычно это автозагрузчик
или какая-либо другая процедура предварительной загрузки: файл начальной загрузки будет подключаться перед выполнением любой задачи.
</para>
<para>
После создания <classname>parallel\Runtime</classname> остаётся доступным до тех пор, пока он не будет закрыт, уничтожен или уничтожен обычными правилами области видимости объектов PHP.
<methodname>parallel\Runtime::run</methodname> позволяет программисту планировать задачи для параллельного выполнения.
У <classname>parallel\Runtime</classname> расписание FIFO, задачи будут выполняться в том порядке, в котором они запланированы.
</para>
</simplesect>
<simplesect>
<title>Функциональный API</title>
<para>
parallel реализует функциональный API более высокого уровня поверх <classname>parallel\Runtime</classname>, который обеспечивает единую точку входа функции для выполнения параллельного кода
с автоматическим планированием: <function>parallel\run</function>.
</para>
</simplesect>
<simplesect>
<title>Задача</title>
<para>
Задача - это просто замыкание (<classname>Closure</classname>), предназначенное для параллельного выполнения. <classname>Closure</classname> может содержать практически любую инструкцию, включая вложенные замыкания.
Однако есть некоторые инструкции, которые запрещены в задачах:
<itemizedlist>
<listitem>
<para>yield</para>
</listitem>
<listitem>
<para>use by-reference</para>
</listitem>
<listitem>
<para>declare class</para>
</listitem>
<listitem>
<para>declare named function</para>
</listitem>
</itemizedlist>
</para>
<note>
<para>
Вложенные замыкания могут содержать "yield" или "use by-reference", но не должны содержать объявления классов или именованных функций.
</para>
</note>
<note>
<para>
Никакие инструкции не запрещены в файлах, которые может включать задача.
</para>
</note>
</simplesect>
<simplesect>
<title>Фьючерс</title>
<para>
<classname>parallel\Future</classname> используется для доступа к возвращаемому значению из задачи и предоставляет API для отмены задачи.
</para>
</simplesect>
<simplesect>
<title>Канал</title>
<para>
Задачу можно запланировать с аргументами, использовать переменные лексической области видимости (по значению) и вернуть значение (с помощью <classname>parallel\Future</classname>), но это разрешает только однонаправленную связь:
Это позволяет программисту отправлять данные и извлекать данные из задачи, но не допускают двунаправленную связь между задачами.
API <classname>parallel\Channel</classname> обеспечивает двунаправленную связь между задачами, <classname>parallel\Channel</classname> - это соединение типа сокета между задачами, которое программист может использовать для отправки и получения данных.
</para>
</simplesect>
<simplesect>
<title>События</title>
<para>
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>
</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
-->