|
1 | 1 | <?xml version="1.0" encoding="utf-8"?> |
2 | | -<!-- EN-Revision: bbfa9738785f054752e6cb565cd0a58e71015bc6 Maintainer: fernandowobeto Status: ready --><!-- CREDITS: fernandowobeto --> |
3 | | - |
4 | | -<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: fernandowobeto Status: ready --> |
| 3 | +<!-- CREDITS: fernandowobeto --> |
| 4 | +<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"> |
5 | 5 | <?phpdoc extension-membership="pecl" ?> |
6 | 6 | <title>parallel</title> |
7 | 7 | <titleabbrev>parallel</titleabbrev> |
8 | 8 |
|
9 | 9 | <preface xml:id="intro.parallel"> |
10 | 10 | &reftitle.intro; |
11 | | - <para> |
| 11 | + <simpara> |
12 | 12 | parallel é uma extensão de simultaneidade paralela para PHP ≥ 7.2.0. |
13 | 13 | A partir do parallel 1.2.0, PHP ≥ 8.0.0 é necessário. |
14 | | - </para> |
15 | | - <para> |
| 14 | + </simpara> |
| 15 | + <simpara> |
16 | 16 | Segue uma breve descrição dos conceitos básicos do parallel; informações mais detalhadas podem ser encontradas nesta seção do manual. |
17 | | - </para> |
| 17 | + </simpara> |
18 | 18 | <simplesect> |
19 | 19 | <title>Runtime</title> |
20 | | - <para> |
| 20 | + <simpara> |
21 | 21 | Um <classname>parallel\Runtime</classname> representa um thread interpretador de PHP. Um <classname>parallel\Runtime</classname> é configurado com um arquivo de bootstrap opcional passado para <methodname>parallel\Runtime::__construct</methodname>, normalmente é um autoloader |
22 | 22 | ou alguma outra rotina de pré-carregamento: O arquivo de bootstrap irá ser incluído antes de qualquer tarefa ser executada. |
23 | | - </para> |
24 | | - <para> |
| 23 | + </simpara> |
| 24 | + <simpara> |
25 | 25 | Após a construção, o <classname>parallel\Runtime</classname> permanece disponível até ser fechado, eliminado ou destruído pelas regras normais de escopo dos objetos PHP. |
26 | 26 | <methodname>parallel\Runtime::run</methodname> permite ao programador agendar tarefas para execução em paralelo. |
27 | 27 | Um <classname>parallel\Runtime</classname> possui um agendamento FIFO, as tarefas serão executadas na ordem em que foram agendadas. |
28 | | - </para> |
| 28 | + </simpara> |
29 | 29 | </simplesect> |
30 | 30 | <simplesect> |
31 | 31 | <title>API funcional</title> |
32 | | - <para> |
| 32 | + <simpara> |
33 | 33 | parallel implementa uma API funcional de nível superior sobre <classname>parallel\Runtime</classname> que fornece um único ponto de entrada de função para executar código paralelo |
34 | 34 | com agendamento automático: <function>parallel\run</function>. |
35 | | - </para> |
| 35 | + </simpara> |
36 | 36 | </simplesect> |
37 | 37 | <simplesect> |
38 | 38 | <title>Task</title> |
|
41 | 41 | Porém, existem algumas instruções que são proibidas nas tarefas: |
42 | 42 | <itemizedlist> |
43 | 43 | <listitem> |
44 | | - <para>yield</para> |
| 44 | + <simpara>yield</simpara> |
45 | 45 | </listitem> |
46 | 46 | <listitem> |
47 | | - <para>operador 'use' por referência</para> |
| 47 | + <simpara>operador 'use' por referência</simpara> |
48 | 48 | </listitem> |
49 | 49 | <listitem> |
50 | | - <para>declaração de classe</para> |
| 50 | + <simpara>declaração de classe</simpara> |
51 | 51 | </listitem> |
52 | 52 | <listitem> |
53 | | - <para>declaração de função com nome</para> |
| 53 | + <simpara>declaração de função com nome</simpara> |
54 | 54 | </listitem> |
55 | 55 | </itemizedlist> |
56 | 56 | </para> |
57 | 57 | <note> |
58 | | - <para> |
| 58 | + <simpara> |
59 | 59 | Closures aninhados podem ter 'use' por referência ou 'yield', mas não devem conter declarações de classe ou de função nomeada. |
60 | | - </para> |
| 60 | + </simpara> |
61 | 61 | </note> |
62 | 62 | <note> |
63 | | - <para> |
| 63 | + <simpara> |
64 | 64 | Nenhuma instrução é proibida nos arquivos que a tarefa pode incluir. |
65 | | - </para> |
| 65 | + </simpara> |
66 | 66 | </note> |
67 | 67 | </simplesect> |
68 | 68 | <simplesect> |
69 | 69 | <title>Future</title> |
70 | | - <para> |
| 70 | + <simpara> |
71 | 71 | <classname>parallel\Future</classname> é usado para acessar o valor de retorno da tarefa e expõe uma API para cancelamento da tarefa. |
72 | | - </para> |
| 72 | + </simpara> |
73 | 73 | </simplesect> |
74 | 74 | <simplesect> |
75 | 75 | <title>Channel</title> |
76 | | - <para> |
| 76 | + <simpara> |
77 | 77 | Uma tarefa pode ser agendada com argumentos, usar variáveis de escopo léxico (por valor) e retornar um valor (através de um <classname>parallel\Future</classname>), mas estes só permitem comunicação unidirecional: |
78 | 78 | Eles permitem que o programador envie e recupere dados de uma tarefa, mas não permitem a comunicação bidirecional entre tarefas. |
79 | 79 | A API <classname>parallel\Channel</classname> permite a comunicação bidirecional entre tarefas, um <classname>parallel\Channel</classname> é uma conexão entre tarefas semelhante a um soquete que o programador pode usar para enviar e receber dados. |
80 | | - </para> |
| 80 | + </simpara> |
81 | 81 | </simplesect> |
82 | 82 | <simplesect> |
83 | 83 | <title>Events</title> |
84 | | - <para> |
| 84 | + <simpara> |
85 | 85 | A API <classname>parallel\Events</classname> implementa um loop de eventos de sensação nativa (<classname>Traversable</classname>) e um método <methodname>parallel\Events::poll</methodname>. |
86 | 86 | Permite ao programador trabalhar com conjuntos de channels e/ou futures. |
87 | 87 | O programador simplesmente adiciona channels e futures ao loop de eventos, opcionalmente definindo a entrada para gravações com <methodname>parallel\Events::setInput</methodname>, |
88 | 88 | e entra em um foreach: parallel irá ler e escrever em objetos à medida que eles se tornam disponíveis produzindo objetos <classname>parallel\Events\Event</classname> |
89 | 89 | que descrevem as operações que ocorreram. |
90 | | - </para> |
| 90 | + </simpara> |
91 | 91 | </simplesect> |
92 | 92 | <simplesect role="seealso"> |
93 | 93 | &reftitle.seealso; |
94 | 94 | <simplelist> |
95 | | - <member><xref linkend="philosophy.parallel" /></member> |
| 95 | + <member><xref linkend="philosophy.parallel"/></member> |
96 | 96 | </simplelist> |
97 | 97 | </simplesect> |
98 | 98 | </preface> |
|
112 | 112 | <!--&reference.parallel.examples;--> |
113 | 113 |
|
114 | 114 | </book> |
115 | | - |
116 | 115 | <!-- Keep this comment at the end of the file |
117 | 116 | Local variables: |
118 | 117 | mode: sgml |
|
0 commit comments