|
1 | 1 | <?xml version="1.0" encoding="utf-8"?> |
2 | | -<!-- EN-Revision: bbfa9738785f054752e6cb565cd0a58e71015bc6 Maintainer: mproshchuk Status: ready --> |
3 | | -<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"> |
| 2 | +<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: mproshchuk Status: ready --> |
| 3 | +<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"> |
4 | 4 | <?phpdoc extension-membership="pecl" ?> |
5 | 5 | <title>parallel</title> |
6 | 6 | <titleabbrev>parallel</titleabbrev> |
7 | 7 |
|
8 | 8 | <preface xml:id="intro.parallel"> |
9 | 9 | &reftitle.intro; |
10 | | - <para> |
| 10 | + <simpara> |
11 | 11 | Розширення parallel дозволяє виконувати PHP-код в паралельних потоках. |
12 | 12 | Воно доступне в PHP ≥ 7.2.0. Для parallel ≥ 1.2.0 потрібна версія PHP ≥ 8.0.0. |
13 | | - </para> |
14 | | - <para> |
| 13 | + </simpara> |
| 14 | + <simpara> |
15 | 15 | Це стислий опис загального алгоритму parallel. Більше інформації є в |
16 | 16 | наступних частинах розділу. |
17 | | - </para> |
| 17 | + </simpara> |
18 | 18 | <simplesect> |
19 | 19 | <title>Клас Runtime</title> |
20 | | - <para> |
| 20 | + <simpara> |
21 | 21 | Клас <classname>parallel\Runtime</classname> представляє потік |
22 | 22 | інтерпретатора PHP. Клас <classname>parallel\Runtime</classname> |
23 | 23 | можна налаштувати за допомогою необов'язкового файлу ініціалізації, який |
24 | 24 | потрібно передати в метод |
25 | 25 | <methodname>parallel\Runtime::__construct</methodname>. Зазвичай цей файл є |
26 | 26 | автозавантажувачем чи чимсь на кшталт процедури попереднього завантаження: |
27 | 27 | він буде підключатися перед виконанням кожного завдання. |
28 | | - </para> |
29 | | - <para> |
| 28 | + </simpara> |
| 29 | + <simpara> |
30 | 30 | Після створення, примірник <classname>parallel\Runtime</classname> |
31 | 31 | залишається доступним, допоки його не закриють чи знищать відповідно до |
32 | 32 | правил визначення області видимості об'єктів PHP. Метод |
|
35 | 35 | <classname>parallel\Runtime</classname> послуговується принципом FIFO |
36 | 36 | (перший прийшов — перший вийшов), тобто завдання виконуються в тій |
37 | 37 | послідовності, у якій вони були заплановані. |
38 | | - </para> |
| 38 | + </simpara> |
39 | 39 | </simplesect> |
40 | 40 | <simplesect> |
41 | 41 | <title>Функціональний API</title> |
42 | | - <para> |
| 42 | + <simpara> |
43 | 43 | parallel реалізує функціональний API вищого рівня поверх |
44 | 44 | <classname>parallel\Runtime</classname>, надаючи єдину функціональну точку |
45 | 45 | входу для паралельного виконання коду з автоматичним плануванням — функцію |
46 | 46 | <function>parallel\run</function>. |
47 | | - </para> |
| 47 | + </simpara> |
48 | 48 | </simplesect> |
49 | 49 | <simplesect> |
50 | 50 | <title>Завдання</title> |
|
55 | 55 | вкладені замикання. Проте є інструкції, заборонені в завданнях: |
56 | 56 | <itemizedlist> |
57 | 57 | <listitem> |
58 | | - <para>yield</para> |
| 58 | + <simpara>yield</simpara> |
59 | 59 | </listitem> |
60 | 60 | <listitem> |
61 | | - <para>посилання</para> |
| 61 | + <simpara>посилання</simpara> |
62 | 62 | </listitem> |
63 | 63 | <listitem> |
64 | | - <para>оголошення класу</para> |
| 64 | + <simpara>оголошення класу</simpara> |
65 | 65 | </listitem> |
66 | 66 | <listitem> |
67 | | - <para>оголошення функції з назвою</para> |
| 67 | + <simpara>оголошення функції з назвою</simpara> |
68 | 68 | </listitem> |
69 | 69 | </itemizedlist> |
70 | 70 | </para> |
71 | 71 | <note> |
72 | | - <para> |
| 72 | + <simpara> |
73 | 73 | Вкладеним замиканням дозволяється містити інструкції yield або посилання, |
74 | 74 | але не оголошення класів чи функцій з назвами. |
75 | | - </para> |
| 75 | + </simpara> |
76 | 76 | </note> |
77 | 77 | <note> |
78 | | - <para> |
| 78 | + <simpara> |
79 | 79 | Скрипти, що підключені в завданнях, жодних обмежень не мають. |
80 | | - </para> |
| 80 | + </simpara> |
81 | 81 | </note> |
82 | 82 | </simplesect> |
83 | 83 | <simplesect> |
84 | 84 | <title>Ф'ючерс</title> |
85 | | - <para> |
| 85 | + <simpara> |
86 | 86 | Клас <classname>parallel\Future</classname> використовується для доступу до |
87 | 87 | значень, що повертає завдання, і надає API для скасування завдання. |
88 | | - </para> |
| 88 | + </simpara> |
89 | 89 | </simplesect> |
90 | 90 | <simplesect> |
91 | 91 | <title>Канал</title> |
92 | | - <para> |
| 92 | + <simpara> |
93 | 93 | Завдання можна можна додати в чергу, вказати йому параметри, використовувати |
94 | 94 | змінні лексичної області (тобто за значенням), та отримати результат |
95 | 95 | виконання (через клас <classname>parallel\Future</classname>), таким чином |
|
99 | 99 | <classname>parallel\Channel</classname>, який утворює сокет-подібний зв'язок |
100 | 100 | між завданнями, який програміст може використовувати для надсилання та |
101 | 101 | отримання даних. |
102 | | - </para> |
| 102 | + </simpara> |
103 | 103 | </simplesect> |
104 | 104 | <simplesect> |
105 | 105 | <title>Події</title> |
106 | | - <para> |
| 106 | + <simpara> |
107 | 107 | API <classname>parallel\Events</classname> реалізує власний цикл подій |
108 | 108 | (<classname>Traversable</classname>) та метод |
109 | 109 | <methodname>parallel\Events::poll</methodname>. Це дозволяє програмісту |
|
115 | 115 | об'єкти, коли вони стануть доступні, створюючи примірники |
116 | 116 | <classname>parallel\Events\Event</classname>, що описують операції, які |
117 | 117 | відбулися. |
118 | | - </para> |
| 118 | + </simpara> |
119 | 119 | </simplesect> |
120 | 120 | <simplesect role="seealso"> |
121 | 121 | &reftitle.seealso; |
122 | 122 | <simplelist> |
123 | | - <member><xref linkend="philosophy.parallel" /></member> |
| 123 | + <member><xref linkend="philosophy.parallel"/></member> |
124 | 124 | </simplelist> |
125 | 125 | </simplesect> |
126 | 126 | </preface> |
|
140 | 140 | <!--&reference.parallel.examples;--> |
141 | 141 |
|
142 | 142 | </book> |
143 | | - |
144 | 143 | <!-- Keep this comment at the end of the file |
145 | 144 | Local variables: |
146 | 145 | mode: sgml |
|
0 commit comments