parallel : fix XML by converting para to simpara tags via script

This commit is contained in:
Gina Peter Banyard
2026-01-19 03:29:16 +00:00
parent d1da163223
commit fa5a553e3e
44 changed files with 454 additions and 528 deletions

View File

@@ -1,38 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: bbfa9738785f054752e6cb565cd0a58e71015bc6 Maintainer: fernandowobeto Status: ready --><!-- CREDITS: fernandowobeto -->
<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">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: fernandowobeto Status: ready -->
<!-- CREDITS: fernandowobeto -->
<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 é uma extensão de simultaneidade paralela para PHP ≥ 7.2.0.
A partir do parallel 1.2.0, PHP ≥ 8.0.0 é necessário.
</para>
<para>
</simpara>
<simpara>
Segue uma breve descrição dos conceitos básicos do parallel; informações mais detalhadas podem ser encontradas nesta seção do manual.
</para>
</simpara>
<simplesect>
<title>Runtime</title>
<para>
<simpara>
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
ou alguma outra rotina de pré-carregamento: O arquivo de bootstrap irá ser incluído antes de qualquer tarefa ser executada.
</para>
<para>
</simpara>
<simpara>
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.
<methodname>parallel\Runtime::run</methodname> permite ao programador agendar tarefas para execução em paralelo.
Um <classname>parallel\Runtime</classname> possui um agendamento FIFO, as tarefas serão executadas na ordem em que foram agendadas.
</para>
</simpara>
</simplesect>
<simplesect>
<title>API funcional</title>
<para>
<simpara>
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
com agendamento automático: <function>parallel\run</function>.
</para>
</simpara>
</simplesect>
<simplesect>
<title>Task</title>
@@ -41,58 +41,58 @@
Porém, existem algumas instruções que são proibidas nas tarefas:
<itemizedlist>
<listitem>
<para>yield</para>
<simpara>yield</simpara>
</listitem>
<listitem>
<para>operador 'use' por referência</para>
<simpara>operador 'use' por referência</simpara>
</listitem>
<listitem>
<para>declaração de classe</para>
<simpara>declaração de classe</simpara>
</listitem>
<listitem>
<para>declaração de função com nome</para>
<simpara>declaração de função com nome</simpara>
</listitem>
</itemizedlist>
</para>
<note>
<para>
<simpara>
Closures aninhados podem ter 'use' por referência ou 'yield', mas não devem conter declarações de classe ou de função nomeada.
</para>
</simpara>
</note>
<note>
<para>
<simpara>
Nenhuma instrução é proibida nos arquivos que a tarefa pode incluir.
</para>
</simpara>
</note>
</simplesect>
<simplesect>
<title>Future</title>
<para>
<simpara>
<classname>parallel\Future</classname> é usado para acessar o valor de retorno da tarefa e expõe uma API para cancelamento da tarefa.
</para>
</simpara>
</simplesect>
<simplesect>
<title>Channel</title>
<para>
<simpara>
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:
Eles permitem que o programador envie e recupere dados de uma tarefa, mas não permitem a comunicação bidirecional entre tarefas.
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.
</para>
</simpara>
</simplesect>
<simplesect>
<title>Events</title>
<para>
<simpara>
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>.
Permite ao programador trabalhar com conjuntos de channels e/ou futures.
O programador simplesmente adiciona channels e futures ao loop de eventos, opcionalmente definindo a entrada para gravações com <methodname>parallel\Events::setInput</methodname>,
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>
que descrevem as operações que ocorreram.
</para>
</simpara>
</simplesect>
<simplesect role="seealso">
&reftitle.seealso;
<simplelist>
<member><xref linkend="philosophy.parallel" /></member>
<member><xref linkend="philosophy.parallel"/></member>
</simplelist>
</simplesect>
</preface>
@@ -112,7 +112,6 @@
<!--&reference.parallel.examples;-->
</book>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,20 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 3985f162bcb7f71764c8ea1c637d70303c01847c Maintainer: fernandowobeto Status: ready --><!-- CREDITS: fernandowobeto -->
<section xml:id="parallel.installation" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: fernandowobeto Status: ready -->
<!-- CREDITS: fernandowobeto -->
<section xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="parallel.installation">
&reftitle.install;
<para>
<simpara>
Use <option role="configure">--with-parallel[=DIR]</option> ao compilar o PHP.
</para>
</simpara>
<para>
<simpara>
Os usuários do Windows devem incluir <filename>php_parallel.dll</filename> no &php.ini;
</para>
</simpara>
</section>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,21 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: d9ecfba6ad07e4e0b1b13ed1f0592f09d2e2f5c9 Maintainer: fernandowobeto Status: ready --><!-- CREDITS: fernandowobeto -->
<reference xml:id="functional.parallel" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: fernandowobeto Status: ready -->
<!-- CREDITS: fernandowobeto -->
<reference xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="functional.parallel">
<title>API funcional</title>
<partintro>
<para>
<simpara>
A API <classname>parallel\Runtime</classname> fornece um grande grau de controle para o programador PHP avançado e para aqueles intimamente familiarizados com a escrita de aplicativos que usam
simultaneidade paralela.
</para>
</simpara>
<para>
A API funcional fornece menos controle em troca da capacidade de tomar decisões para o programador:
<itemizedlist>
<listitem>
<para>todos os tempos de execução em execução são inicializados de forma idêntica</para>
<simpara>todos os tempos de execução em execução são inicializados de forma idêntica</simpara>
</listitem>
<listitem>
<para>o agendamento é determinado pela API, não pelo programador</para>
<simpara>o agendamento é determinado pela API, não pelo programador</simpara>
</listitem>
</itemizedlist>
<function>parallel\run</function> fornece a garantia de que a tarefa começará a ser executada em paralelo assim que permitido pelas restrições de hardware e sistema operacional, sem
@@ -26,7 +26,6 @@
&reference.parallel.functions.parallel.bootstrap;
&reference.parallel.functions.parallel.run;
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 1efc90bacb2ebf840f5416bd11c8daf8c9345e33 Maintainer: leonardolara Status: ready -->
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: leonardolara Status: ready -->
<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>
<refname>parallel\bootstrap</refname>
@@ -12,9 +12,9 @@
<type>void</type><methodname>parallel\bootstrap</methodname>
<methodparam><type>string</type><parameter>file</parameter></methodparam>
</methodsynopsis>
<para>
<simpara>
Usa o arquivo informado em <parameter>file</parameter> para inicializar todas as variáveis em tempo de execução criadas para agendamento automático via <function>parallel\run</function>.
</para>
</simpara>
</refsect1>
<refsect1 role="parameters">
@@ -23,9 +23,9 @@
<varlistentry>
<term><parameter>file</parameter></term>
<listitem>
<para>
<simpara>
Caminho para o arquivo para inicializar todas as variáveis.
</para>
</simpara>
</listitem>
</varlistentry>
</variablelist>
@@ -33,22 +33,22 @@
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
<simpara>
&return.void;
</para>
</simpara>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<warning>
<para>
<simpara>
Lança uma exceção <type>parallel\Runtime\Error\Bootstrap</type> se o método já tiver sido chamado para este processo.
</para>
</simpara>
</warning>
<warning>
<para>
<simpara>
Lança uma exceção <type>parallel\Runtime\Error\Bootstrap</type> se chamado após <function>parallel\run</function>.
</para>
</simpara>
</warning>
</refsect1>

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 41445b3d771660805270f52adf0e421aa20f12ab Maintainer: leonardolara Status: ready -->
<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">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: leonardolara Status: ready -->
<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>Execução</refpurpose>
@@ -13,44 +12,44 @@
<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>
Agenda a tarefa informada em <parameter>task</parameter> para execução em paralelo.
</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>
Agenda a tarefa informada em <parameter>task</parameter> para execução em paralelo, passando os argumentos <parameter>argv</parameter> no momento da execução.
</para>
</simpara>
</refsect1>
<refsect1 role="scheduling-characteristics">
<title>Agendamento Automático</title>
<para>
<simpara>
Se um <classname>\parallel\Runtime</classname> criado internamente e armazenado em cache por uma chamada anterior a <function>parallel\run</function> estiver ocioso,
ele será usado para executar a tarefa. Se nenhum <classname>\parallel\Runtime</classname> estiver ocioso, o parallel criará e armazenará em cache um
<classname>\parallel\Runtime</classname>.
</para>
</simpara>
<note>
<para>
<simpara>
Objetos <classname>\parallel\Runtime</classname> criados pelo programador não são usados para agendamento automático.
</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>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: d9ecfba6ad07e4e0b1b13ed1f0592f09d2e2f5c9 Maintainer: fernandowobeto Status: ready --><!-- CREDITS: fernandowobeto -->
<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">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: fernandowobeto Status: ready -->
<!-- CREDITS: fernandowobeto -->
<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>A classe parallel\Channel</title>
<titleabbrev>parallel\Channel</titleabbrev>
@@ -9,45 +9,45 @@
<partintro>
<section>
<title>Channels sem buffer</title>
<para>
<simpara>
Um channel sem buffer bloqueará chamadas para <methodname>parallel\Channel::send</methodname> até que haja um receptor e bloqueará chamadas
para <methodname>parallel\Channel::recv</methodname> até que haja um remetente. Isso significa que um channel sem buffer não é apenas uma forma de compartilhar dados entre tarefas,
mas também um método simples de sincronização.
</para>
<para>
</simpara>
<simpara>
Um channel sem buffer é a maneira mais rápida de compartilhar dados entre tarefas, exigindo menos cópias.
</para>
</simpara>
</section>
<section>
<title>Channels em buffer</title>
<para>
<simpara>
m canal em buffer não bloqueará chamadas para <methodname>parallel\Channel::send</methodname> até que a capacidade seja atingida, chamadas para
<methodname>parallel\Channel::recv</methodname> serão bloqueadas até que haja dados no buffer.
</para>
</simpara>
</section>
<section>
<title>Closures sobre Channels</title>
<para>
<simpara>
Uma característica poderosa dos channels paralelos é que eles permitem a troca de closures entre tarefas (e tempos de execução).
</para>
<para>
</simpara>
<simpara>
Quando um closure é enviado através de um channel, o closure é armazenado em buffer, isso não altera o buffer do channel que transmite o closure,
mas afeta o escopo estático dentro do closure: O mesmo closure enviado para tempos de execução diferentes, ou o mesmo tempo de execução,
não compartilharão seu escopo estático.
</para>
<para>
</simpara>
<simpara>
Isso significa que sempre que for executado um closure transmitido por um channel, o estado estático será o mesmo de quando o closure foi armazenado em buffer.
</para>
</simpara>
</section>
<section>
<title>Channels Anônimos</title>
<para>
<simpara>
O construtor de channel anônimo permite ao programador evitar atribuir nomes a cada channel: parallel gerará um nome exclusivo para
channels anônimos.
</para>
</simpara>
</section>
<section xml:id="parallel-channel.synopsis">
@@ -68,22 +68,22 @@
<classsynopsisinfo role="comment">Construtor Anônimo</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">Acesso</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">Compartilhamento</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">Encerramento</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">Constante para Buffer Infinito</classsynopsisinfo>
@@ -107,7 +107,6 @@
&reference.parallel.parallel.channel.close;
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: d9ecfba6ad07e4e0b1b13ed1f0592f09d2e2f5c9 Maintainer: fernandowobeto Status: ready --><!-- CREDITS: fernandowobeto -->
<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">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: fernandowobeto Status: ready -->
<!-- CREDITS: fernandowobeto -->
<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>A classe parallel\Events\Event</title>
<titleabbrev>parallel\Events\Event</titleabbrev>
@@ -10,10 +10,10 @@
<section>
<title>Objetos Event</title>
<para>
<simpara>
Quando um Event é retornado, <varname>Event::$object</varname> deve ser removido do loop que o retornou, caso o evento seja um evento de gravação,
o <classname>Input</classname> para <varname>Event::$source</varname> também será removido.
</para>
</simpara>
</section>
<section xml:id="parallel-events-event.synopsis">
&reftitle.classsynopsis;
@@ -66,7 +66,6 @@
</partintro>
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: d9ecfba6ad07e4e0b1b13ed1f0592f09d2e2f5c9 Maintainer: fernandowobeto Status: ready --><!-- CREDITS: fernandowobeto -->
<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">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: fernandowobeto Status: ready -->
<!-- CREDITS: fernandowobeto -->
<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>A classe parallel\Events\Input</title>
<titleabbrev>parallel\Events\Input</titleabbrev>
@@ -10,16 +10,16 @@
<section>
<title>Eventos Input</title>
<para>
<simpara>
Um objeto Input é um contêiner para dados que o objeto <classname>parallel\Events</classname> gravará nos objetos
<classname>parallel\Channel</classname> à medida que se tornarem disponíveis. Vários loops de eventos podem compartilhar um contêiner de Input - parallel não
verifica o conteúdo do contêiner quando ele é definido como entrada para um objeto <classname>parallel\Events</classname>.
</para>
</simpara>
<note>
<para>
<simpara>
Quando um objeto <classname>parallel\Events</classname> executa uma gravação, o destino é removido do objeto de entrada como se
<methodname>parallel\Events\Input::remove</methodname> fosse chamado.
</para>
</simpara>
</note>
</section>
@@ -40,13 +40,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>
@@ -59,7 +59,6 @@
&reference.parallel.parallel.entities.input;
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: d9ecfba6ad07e4e0b1b13ed1f0592f09d2e2f5c9 Maintainer: fernandowobeto Status: ready --><!-- CREDITS: fernandowobeto -->
<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">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: fernandowobeto Status: ready -->
<!-- CREDITS: fernandowobeto -->
<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>A classe parallel\Events</title>
<titleabbrev>parallel\Events</titleabbrev>
@@ -9,9 +9,9 @@
<partintro>
<section>
<title>O loop de eventos</title>
<para>
<simpara>
O loop de eventos monitora o estado de conjuntos de futures e/ou channels (targets) para realizar a leitura (<methodname>parallel\Future::value</methodname>, <methodname>parallel\Channel::recv</methodname>) e escreva operações (<methodname>parallel\Channel::send</methodname>) à medida que os destinos se tornam disponíveis e as operações podem ser executadas sem bloquear o loop de eventos.
</para>
</simpara>
</section>
<section xml:id="parallel-events.synopsis">
&reftitle.classsynopsis;
@@ -37,22 +37,22 @@
<classsynopsisinfo role="comment">Input</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">Targets</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">Behaviour</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">Polling</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>
<!-- }}} -->
@@ -70,7 +70,6 @@
&reference.parallel.parallel.events.poll;
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: a31156c3d8e98d9d8d0d82cab7e37407a4f75f63 Maintainer: fernandowobeto Status: ready --><!-- CREDITS: fernandowobeto -->
<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">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: fernandowobeto Status: ready -->
<!-- CREDITS: fernandowobeto -->
<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>A classe parallel\Future</title>
<titleabbrev>parallel\Future</titleabbrev>
@@ -10,9 +10,9 @@
<section>
<title>Futures</title>
<para>
<simpara>
Um Future representa o valor de retorno ou exceção não detectada de uma tarefa e expõe uma API para cancelamento.
</para>
</simpara>
<example>
<title>Exemplo mostrando Future como valor de retorno</title>
<programlisting role="php">
@@ -33,9 +33,9 @@ Olá Mundo
]]>
</screen>
</example>
<para>
<simpara>
O comportamento de um future também permite que ele seja usado como um simples ponto de sincronização mesmo quando a tarefa não retorna um valor explicitamente.
</para>
</simpara>
<example>
<title>Exemplo mostrando Future como ponto de sincronização</title>
<programlisting role="php">
@@ -85,17 +85,17 @@ pai continua
<classsynopsisinfo role="comment">Resolution</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">State</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">Cancellation</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>
@@ -108,7 +108,6 @@ pai continua
&reference.parallel.parallel.entities.future;
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: d0da6acae85277454b0f27f1fb208040173ec234 Maintainer: fernandowobeto Status: ready --><!-- CREDITS: fernandowobeto -->
<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">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: fernandowobeto Status: ready -->
<!-- CREDITS: fernandowobeto -->
<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>A classe parallel\Runtime</title>
<titleabbrev>parallel\Runtime</titleabbrev>
@@ -10,31 +10,31 @@
<section>
<title>Runtime Objects</title>
<para>
<simpara>
Cada tempo de execução representa um único thread PHP, o thread é criado (e inicializado) durante a construção.
O thread então espera que as tarefas sejam agendadas: As tarefas agendadas serão executadas FIFO e então o thread continuará esperando até
que mais tarefas sejam agendadas ou seja fechado, eliminado ou destruído pelas regras normais de escopo dos objetos PHP.
</para>
</simpara>
<warning>
<para>
<simpara>
Quando um tempo de execução é destruído pelas regras normais de escopo de objetos PHP, ele primeiro executará todas as tarefas que foram agendadas
e bloqueará ao fazê-lo.
</para>
</simpara>
</warning>
</section>
<section>
<title>Bootstrapping em tempo de execução</title>
<para>
<simpara>
Quando um novo tempo de execução é criado, ele não compartilha código com o thread (ou processo) que o criou. Isso significa que ele não possui as mesmas
classes e funções carregadas, nem o mesmo conjunto de autoloader. Em alguns casos, um tempo de execução muito leve é desejável porque as tarefas que
serão agendadas não precisam de acesso ao código no thread pai. Nos casos em que as tarefas precisam acessar o mesmo código, basta
definir um autoloader como bootstrap.
</para>
</simpara>
<note>
<para>
<simpara>
preloading pode ser usado em conjunto com o parallel; neste caso, o código pré-carregado está disponível sem inicialização
</para>
</simpara>
</note>
</section>
@@ -56,17 +56,17 @@
<classsynopsisinfo role="comment">Create</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">Execute</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">Join</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>
<!-- }}} -->
@@ -81,7 +81,6 @@
&reference.parallel.parallel.runtime.kill;
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 0997ae3510683f23a1d6dc675ddc0f689e411d90 Maintainer: fernandowobeto Status: ready --><!-- CREDITS: fernandowobeto -->
<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">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: fernandowobeto Status: ready -->
<!-- CREDITS: fernandowobeto -->
<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>A classe parallel\Sync</title>
<titleabbrev>parallel\Sync</titleabbrev>
@@ -9,14 +9,14 @@
<partintro>
<section>
<title>Sincronização de baixo nível</title>
<para>
<simpara>
A classe <classname>parallel\Sync</classname> fornece acesso a sincronização primitiva de baixo nível, mutex, variáveis de condição e permite a implementação de semáforos.
</para>
</simpara>
<para>
<simpara>
A sincronização para a maioria das aplicações é muito melhor implementada usando canais; no entanto, em alguns casos, os autores de código de baixo nível podem achar útil poder acessar
esses mecanismos de nível inferior.
</para>
</simpara>
</section>
@@ -38,17 +38,17 @@
<classsynopsisinfo role="comment">Constructor</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">Access</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">Synchronization</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>
@@ -66,7 +66,6 @@
&reference.parallel.parallel.sync.invoke;
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 52bf027d4cb01fee7d4e33095d3c5ecd6f76fff1 Maintainer: leonardolara Status: ready -->
<refentry xml:id="parallel-channel.close" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: leonardolara Status: ready -->
<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>Fechamento</refpurpose>
@@ -11,25 +10,24 @@
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>void</type><methodname>parallel\Channel::close</methodname>
<void />
<void/>
</methodsynopsis>
<para>
<simpara>
Fecha o canal.
</para>
</simpara>
</refsect1>
<refsect1 role="exceptions">
<title>Exceptions</title>
<warning>
<para>
<simpara>
Lança uma exceção <type>parallel\Channel\Error\Closed</type> se o canal estiver fechado.
</para>
</simpara>
</warning>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: d9ecfba6ad07e4e0b1b13ed1f0592f09d2e2f5c9 Maintainer: leonardolara Status: ready -->
<refentry xml:id="parallel-channel.construct" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: leonardolara Status: ready -->
<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>Construção de canal</refpurpose>
@@ -13,16 +12,16 @@
<modifier>public</modifier> <methodname>parallel\Channel::__construct</methodname>
<void/>
</methodsynopsis>
<para>
<simpara>
Constrói um canal anônimo sem buffer.
</para>
</simpara>
<methodsynopsis>
<modifier>public</modifier> <methodname>parallel\Channel::__construct</methodname>
<methodparam><type>int</type><parameter>capacity</parameter></methodparam>
</methodsynopsis>
<para>
<simpara>
Constrói um canal anônimo sem buffer com a capacidade informada.
</para>
</simpara>
</refsect1>
@@ -32,16 +31,15 @@
<varlistentry>
<term><parameter>capacity</parameter></term>
<listitem>
<para>
<simpara>
Pode ser <type>Channel::Infinite</type> ou um inteiro positivo.
</para>
</simpara>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 52bf027d4cb01fee7d4e33095d3c5ecd6f76fff1 Maintainer: leonardolara Status: ready -->
<refentry xml:id="parallel-channel.make" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: leonardolara Status: ready -->
<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>Construção de canal</refpurpose>
@@ -13,17 +12,17 @@
<modifier>public</modifier> <type>Channel</type><methodname>parallel\Channel::make</methodname>
<methodparam><type>string</type><parameter>name</parameter></methodparam>
</methodsynopsis>
<para>
<simpara>
Constrói um canal sem buffer com o nome informado.
</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>
Constrói um canal sem buffer com o nome e a capacidade informados.
</para>
</simpara>
</refsect1>
@@ -33,17 +32,17 @@
<varlistentry>
<term><parameter>name</parameter></term>
<listitem>
<para>
<simpara>
O nome do canal.
</para>
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>capacity</parameter></term>
<listitem>
<para>
<simpara>
Pode ser <type>Channel::Infinite</type> ou um inteiro positivo.
</para>
</simpara>
</listitem>
</varlistentry>
</variablelist>
@@ -52,14 +51,13 @@
<refsect1 role="exceptions">
<title>Exceptions</title>
<warning>
<para>
<simpara>
Lança uma exceção <type>parallel\Channel\Error\Existence</type> se o canal já existir.
</para>
</simpara>
</warning>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 52bf027d4cb01fee7d4e33095d3c5ecd6f76fff1 Maintainer: leonardolara Status: ready -->
<refentry xml:id="parallel-channel.open" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: leonardolara Status: ready -->
<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>Acesso</refpurpose>
@@ -13,23 +12,22 @@
<modifier>public</modifier> <type>Channel</type><methodname>parallel\Channel::open</methodname>
<methodparam><type>string</type><parameter>name</parameter></methodparam>
</methodsynopsis>
<para>
<simpara>
Abre o canal com o nome especificado.
</para>
</simpara>
</refsect1>
<refsect1 role="exceptions">
<title>Exceptions</title>
<warning>
<para>
<simpara>
Lança uma exceção <type>parallel\Channel\Error\Existence</type> se o canal não existir.
</para>
</simpara>
</warning>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 52bf027d4cb01fee7d4e33095d3c5ecd6f76fff1 Maintainer: leonardolara Status: ready -->
<refentry xml:id="parallel-channel.recv" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: leonardolara Status: ready -->
<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>Compartilhamento</refpurpose>
@@ -11,25 +10,24 @@
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>mixed</type><methodname>parallel\Channel::recv</methodname>
<void />
<void/>
</methodsynopsis>
<para>
<simpara>
Recebe um valor deste canal.
</para>
</simpara>
</refsect1>
<refsect1 role="exceptions">
<title>Exceptions</title>
<warning>
<para>
<simpara>
Lança uma exceção <type>parallel\Channel\Error\Closed</type> se o canal estiver fechado.
</para>
</simpara>
</warning>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 52bf027d4cb01fee7d4e33095d3c5ecd6f76fff1 Maintainer: leonardolara Status: ready -->
<refentry xml:id="parallel-channel.send" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: leonardolara Status: ready -->
<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>Compartilhamento</refpurpose>
@@ -13,28 +12,27 @@
<modifier>public</modifier> <type>void</type><methodname>parallel\Channel::send</methodname>
<methodparam><type>mixed</type><parameter>value</parameter></methodparam>
</methodsynopsis>
<para>
<simpara>
Envia neste canal o valor informado.
</para>
</simpara>
</refsect1>
<refsect1 role="exceptions">
<title>Exceptions</title>
<warning>
<para>
<simpara>
Lança uma exceção <type>parallel\Channel\Error\Closed</type> se o canal estiver fechado.
</para>
</simpara>
</warning>
<warning>
<para>
<simpara>
Lança uma exceção <type>parallel\Channel\Error\IllegalValue</type> se o valor for ilegal.
</para>
</simpara>
</warning>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 52bf027d4cb01fee7d4e33095d3c5ecd6f76fff1 Maintainer: leonardolara Status: ready -->
<refentry xml:id="parallel-events.addchannel" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: leonardolara Status: ready -->
<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>Alvos</refpurpose>
@@ -13,22 +12,21 @@
<modifier>public</modifier> <type>void</type><methodname>parallel\Events::addChannel</methodname>
<methodparam><type>parallel\Channel</type><parameter>channel</parameter></methodparam>
</methodsynopsis>
<para>
<simpara>
Observa eventos no canal informado em <parameter>channel</parameter>.
</para>
</simpara>
</refsect1>
<refsect1 role="exceptions">
<title>Exceptions</title>
<warning>
<para>
<simpara>
Lança uma exceção <type>parallel\Events\Error\Existence</type> se o canal já tiver sido adicionado.
</para>
</simpara>
</warning>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 52bf027d4cb01fee7d4e33095d3c5ecd6f76fff1 Maintainer: leonardolara Status: ready -->
<refentry xml:id="parallel-events.addfuture" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: leonardolara Status: ready -->
<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>Alvos</refpurpose>
@@ -14,22 +13,21 @@
<methodparam><type>string</type><parameter>name</parameter></methodparam>
<methodparam><type>parallel\Future</type><parameter>future</parameter></methodparam>
</methodsynopsis>
<para>
<simpara>
Observa eventos no <parameter>future</parameter> informado.
</para>
</simpara>
</refsect1>
<refsect1 role="exceptions">
<title>Exceptions</title>
<warning>
<para>
<simpara>
Lança uma exceção <type>parallel\Events\Error\Existence</type> se o alvo com o nome informado já tiver sido adicionado.
</para>
</simpara>
</warning>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 5d927c376e2d53433ff435eea53e546b51d9834b Maintainer: leonardolara Status: ready -->
<refentry xml:id="parallel-events.poll" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: leonardolara Status: ready -->
<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>Pesquisa</refpurpose>
@@ -11,37 +10,36 @@
&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>
Pesquisa pelo próximo evento.
</para>
</simpara>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
<simpara>
Caso não haja alvos restantes, &null; será retornado.
</para>
<para>
</simpara>
<simpara>
Caso este seja um laço não bloqueante e ocorra bloqueio, &null; deverá ser retornado.
</para>
<para>
</simpara>
<simpara>
Caso contrário, o <classname>parallel\Events\Event</classname> retornado descreve o evento.
</para>
</simpara>
</refsect1>
<refsect1 role="exceptions">
<title>Exceptions</title>
<warning>
<para>
<simpara>
Lança uma exceção <type>parallel\Events\Error\Timeout</type> se o tempo limite for usado e tiver sido alcançado.
</para>
</simpara>
</warning>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 52bf027d4cb01fee7d4e33095d3c5ecd6f76fff1 Maintainer: leonardolara Status: ready -->
<refentry xml:id="parallel-events.remove" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: leonardolara Status: ready -->
<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>Alvos</refpurpose>
@@ -13,22 +12,21 @@
<modifier>public</modifier> <type>void</type><methodname>parallel\Events::remove</methodname>
<methodparam><type>string</type><parameter>target</parameter></methodparam>
</methodsynopsis>
<para>
<simpara>
Remove o alvo informado em <parameter>target</parameter>.
</para>
</simpara>
</refsect1>
<refsect1 role="exceptions">
<title>Exceptions</title>
<warning>
<para>
<simpara>
Lança uma exceção <type>parallel\Events\Error\Existence</type> se o alvo com o nome informado não for encontrado.
</para>
</simpara>
</warning>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 5d927c376e2d53433ff435eea53e546b51d9834b Maintainer: leonardolara Status: ready -->
<refentry xml:id="parallel-events.setblocking" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: leonardolara Status: ready -->
<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>Comportamento</refpurpose>
@@ -9,37 +8,36 @@
<refsect1 role="description" audience="behaviour">
&reftitle.description;
<para>
<simpara>
Por padrão, quando eventos são pesquisados, o bloqueio ocorrerá (no nível do PHP) até que o primeiro evento possa ser retornado: definir o modo de bloqueio como &false; fará com que
a pesquisa retorne o controle se o primeiro alvo pesquisado não estiver pronto.
</para>
<para>
</simpara>
<simpara>
Isso difere de definir um tempo limite de 0 com <methodname>parallel\Events::setTimeout</methodname>, pois um tempo limite de 0, embora permitido, fará com que uma exceção seja gerada,
o que pode ser extremamente lento ou um desperdício se o que realmente se deseja é um comportamento não bloqueante.
</para>
<para>
</simpara>
<simpara>
Um laço não bloqueante afeta o valor de retorno de <methodname>parallel\Events::poll</methodname>, de modo que ele pode ser &null; antes que todos os eventos tenham sido processados.
</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>
Define o modo de bloqueio.
</para>
</simpara>
</refsect1>
<refsect1 role="exceptions">
<title>Exceptions</title>
<warning>
<para>
<simpara>
Lança uma exceção <type>parallel\Events\Error</type> se o laço tiver tempo limite definido.
</para>
</simpara>
</warning>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: d9ecfba6ad07e4e0b1b13ed1f0592f09d2e2f5c9 Maintainer: leonardolara Status: ready -->
<refentry xml:id="parallel-events.setinput" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: leonardolara Status: ready -->
<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>Entrada</refpurpose>
@@ -13,13 +12,12 @@
<modifier>public</modifier> <type>void</type><methodname>parallel\Events::setInput</methodname>
<methodparam><type>Input</type><parameter>input</parameter></methodparam>
</methodsynopsis>
<para>
<simpara>
Define a entrada informada em <parameter>input</parameter> para este laço de evento.
</para>
</simpara>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 5d927c376e2d53433ff435eea53e546b51d9834b Maintainer: leonardolara Status: ready -->
<refentry xml:id="parallel-events.settimeout" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: leonardolara Status: ready -->
<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>Comportamento</refpurpose>
@@ -9,33 +8,32 @@
<refsect1 role="description" audience="behaviour">
&reftitle.description;
<para>
<simpara>
Por padrão, quando eventos são pesquisados, o bloqueio ocorrerá (no nível do PHP) até que o primeiro evento possa ser retornado: Definir o tempo limite faz com que uma exceção seja
gerada quando o tempo limite for atingido.
</para>
<para>
</simpara>
<simpara>
Isso é diferente de definir o modo de bloqueio como &false; com <methodname>parallel\Events::setBlocking</methodname>, o que não causará o lançamento de uma exceção.
</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>
Define o limite de tempo em microssegundos.
</para>
</simpara>
</refsect1>
<refsect1 role="exceptions">
<title>Exceções</title>
<warning>
<para>
<simpara>
Lança uma exceção <type>parallel\Events\Error</type> se o laço for não bloqueante.
</para>
</simpara>
</warning>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 52bf027d4cb01fee7d4e33095d3c5ecd6f76fff1 Maintainer: leonardolara Status: ready -->
<refentry xml:id="parallel-future.cancel" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: leonardolara Status: ready -->
<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>Cancelamento</refpurpose>
@@ -11,39 +10,38 @@
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>bool</type><methodname>parallel\Future::cancel</methodname>
<void />
<void/>
</methodsynopsis>
<para>
<simpara>
Tenta cancelar a tarefa.
</para>
</simpara>
<note>
<para>
<simpara>
Se a tarefa estiver em execução, será interrompida.
</para>
</simpara>
</note>
<warning>
<para>
<simpara>
Chamadas de função internas em andamento não podem ser interrompidas.
</para>
</simpara>
</warning>
</refsect1>
<refsect1 role="exceptions">
<title>Exceptions</title>
<warning>
<para>
<simpara>
Lança uma exceção <type>parallel\Future\Error\Killed</type> se a tarefa de execução de <type>parallel\Runtime</type> tiver sido encerrada.
</para>
</simpara>
</warning>
<warning>
<para>
<simpara>
Lança uma exceção <type>parallel\Future\Error\Cancelled</type> se a tarefa já tiver sido cancelada.
</para>
</simpara>
</warning>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: d9ecfba6ad07e4e0b1b13ed1f0592f09d2e2f5c9 Maintainer: leonardolara Status: ready -->
<refentry xml:id="parallel-future.cancelled" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: leonardolara Status: ready -->
<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>Detecção de estado</refpurpose>
@@ -11,16 +10,15 @@
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>bool</type><methodname>parallel\Future::cancelled</methodname>
<void />
<void/>
</methodsynopsis>
<para>
<simpara>
Indica se a tarefa foi cancelada.
</para>
</simpara>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: f0a2fee71b120f8afdef2aa7967f4f678f954518 Maintainer: leonardolara Status: ready -->
<refentry xml:id="parallel-future.done" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: leonardolara Status: ready -->
<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>Detecção de estado</refpurpose>
@@ -11,16 +10,15 @@
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>bool</type><methodname>parallel\Future::done</methodname>
<void />
<void/>
</methodsynopsis>
<para>
<simpara>
Indica se a tarefa foi concluída.
</para>
</simpara>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 52bf027d4cb01fee7d4e33095d3c5ecd6f76fff1 Maintainer: leonardolara Status: ready -->
<refentry xml:id="parallel-future.value" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: leonardolara Status: ready -->
<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>Resolução</refpurpose>
@@ -11,45 +10,44 @@
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>mixed</type><methodname>parallel\Future::value</methodname>
<void />
<void/>
</methodsynopsis>
<para>
<simpara>
Retorna (e se necessário espera pelo retorno) da tarefa.
</para>
</simpara>
</refsect1>
<refsect1 role="exceptions">
<title>Exceptions</title>
<warning>
<para>
<simpara>
Lança uma exceção <type>parallel\Future\Error</type> se a espera falhar (erro interno).
</para>
</simpara>
</warning>
<warning>
<para>
<simpara>
Lança uma exceção <type>parallel\Future\Error\Killed</type> se a tarefa de execução de <type>parallel\Runtime</type> foi encerrada.
</para>
</simpara>
</warning>
<warning>
<para>
<simpara>
Lança uma exceção <type>parallel\Future\Error\Cancelled</type> se a tarefa tiver sido cancelada.
</para>
</simpara>
</warning>
<warning>
<para>
<simpara>
Lança uma exceção <type>parallel\Future\Error\Foreign</type> se a tarefa emitir uma exceção não capturável irreconhecível.
</para>
</simpara>
</warning>
<warning>
<para>
<simpara>
Relança <type>Throwable</type> não capturada na tarefa.
</para>
</simpara>
</warning>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 5d927c376e2d53433ff435eea53e546b51d9834b Maintainer: leonardolara Status: ready -->
<refentry xml:id="parallel-events-input.add" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: leonardolara Status: ready -->
<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>Entradas</refpurpose>
@@ -14,27 +13,26 @@
<methodparam><type>string</type><parameter>target</parameter></methodparam>
<methodparam><type>mixed</type><parameter>value</parameter></methodparam>
</methodsynopsis>
<para>
<simpara>
Define a entrada para o alvo especificado.
</para>
</simpara>
</refsect1>
<refsect1 role="exceptions">
<title>Exceptions</title>
<warning>
<para>
<simpara>
Lança uma exceção <type>parallel\Events\Input\Error\Existence</type> se a entrada para o alvo já existir.
</para>
</simpara>
</warning>
<warning>
<para>
<simpara>
Lança uma exceção <type>parallel\Events\Input\Error\IllegalValue</type> se o valor for ilegal (&object;, &null;).
</para>
</simpara>
</warning>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: d9ecfba6ad07e4e0b1b13ed1f0592f09d2e2f5c9 Maintainer: leonardolara Status: ready -->
<refentry xml:id="parallel-events-input.clear" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: leonardolara Status: ready -->
<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>Entradas</refpurpose>
@@ -11,15 +10,14 @@
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>void</type><methodname>parallel\Events\Input::clear</methodname>
<void />
<void/>
</methodsynopsis>
<para>
<simpara>
Remove a entrada de todos os alvos.
</para>
</simpara>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 52bf027d4cb01fee7d4e33095d3c5ecd6f76fff1 Maintainer: leonardolara Status: ready -->
<refentry xml:id="parallel-events-input.remove" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: leonardolara Status: ready -->
<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>Entradas</refpurpose>
@@ -13,22 +12,21 @@
<modifier>public</modifier> <type>void</type><methodname>parallel\Events\Input::remove</methodname>
<methodparam><type>string</type><parameter>target</parameter></methodparam>
</methodsynopsis>
<para>
<simpara>
Remove a entrada do alvo especificado.
</para>
</simpara>
</refsect1>
<refsect1 role="exceptions">
<title>Exceptions</title>
<warning>
<para>
<simpara>
Lança uma exceção <type>parallel\Events\Input\Error\Existence</type> se a entrada para o alvo não existir.
</para>
</simpara>
</warning>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 52bf027d4cb01fee7d4e33095d3c5ecd6f76fff1 Maintainer: leonardolara Status: ready -->
<refentry xml:id="parallel-runtime.close" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: leonardolara Status: ready -->
<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>Encerramento elegante de Runtime</refpurpose>
@@ -11,30 +10,29 @@
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>void</type><methodname>parallel\Runtime::close</methodname>
<void />
<void/>
</methodsynopsis>
<para>
<simpara>
Solicita que a execução seja encerrada.
</para>
</simpara>
<note>
<para>
<simpara>
As tarefas agendadas para execução serão executadas antes que o encerramento ocorra.
</para>
</simpara>
</note>
</refsect1>
<refsect1 role="exceptions">
<title>Exceptions</title>
<warning>
<para>
<simpara>
Lança uma exceção <type>parallel\Runtime\Error\Closed</type> se <type>Runtime</type> já tiver sido fechada.
</para>
</simpara>
</warning>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 52bf027d4cb01fee7d4e33095d3c5ecd6f76fff1 Maintainer: leonardolara Status: ready -->
<refentry xml:id="parallel-runtime.construct" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: leonardolara Status: ready -->
<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>Construção de Runtime</refpurpose>
@@ -11,18 +10,18 @@
&reftitle.description;
<constructorsynopsis>
<modifier>public</modifier> <methodname>parallel\Runtime::__construct</methodname>
<void />
<void/>
</constructorsynopsis>
<para>
<simpara>
Contrói um novo Runtime sem inicialização.
</para>
</simpara>
<constructorsynopsis>
<modifier>public</modifier> <methodname>parallel\Runtime::__construct</methodname>
<methodparam><type>string</type><parameter>bootstrap</parameter></methodparam>
</constructorsynopsis>
<para>
<simpara>
Contrói um novo Runtime com inicialização.
</para>
</simpara>
</refsect1>
@@ -32,9 +31,9 @@
<varlistentry>
<term><parameter>bootstrap</parameter></term>
<listitem>
<para>
<simpara>
A localização de um arquivo de inicialização, geralmente um carregador automático.
</para>
</simpara>
</listitem>
</varlistentry>
</variablelist>
@@ -43,19 +42,18 @@
<refsect1 role="exceptions">
<title>Exceptions</title>
<warning>
<para>
<simpara>
Lança uma exceção <type>parallel\Runtime\Error</type> se a thread não puder ser criada.
</para>
</simpara>
</warning>
<warning>
<para>
<simpara>
Lança uma exceção <type>parallel\Runtime\Bootstrap</type> se a inicialização falhar.
</para>
</simpara>
</warning>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 52bf027d4cb01fee7d4e33095d3c5ecd6f76fff1 Maintainer: leonardolara Status: ready -->
<refentry xml:id="parallel-runtime.kill" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: leonardolara Status: ready -->
<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>Encerramento de Runtime</refpurpose>
@@ -11,35 +10,34 @@
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>void</type><methodname>parallel\Runtime::kill</methodname>
<void />
<void/>
</methodsynopsis>
<para>
<simpara>
Tenta forçar o Runtime a encerrar.
</para>
</simpara>
<note>
<para>
<simpara>
Tarefas agendadas para execução não serão executadas, a tarefa em execução no momento será interrompida.
</para>
</simpara>
</note>
<warning>
<para>
<simpara>
Chamadas de funções internas em andamento não podem ser interrompidas.
</para>
</simpara>
</warning>
</refsect1>
<refsect1 role="exceptions">
<title>Exceptions</title>
<warning>
<para>
<simpara>
Lança uma exceção <type>parallel\Runtime\Error\Closed</type> se <type>Runtime</type> tiver sido fechada.
</para>
</simpara>
</warning>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 41445b3d771660805270f52adf0e421aa20f12ab Maintainer: leonardolara Status: ready -->
<refentry xml:id="parallel-runtime.run" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: leonardolara Status: ready -->
<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>Execução</refpurpose>
@@ -13,17 +12,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>
Agenda a tarefa <parameter>task</parameter> para execução em paralelo.
</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>
Agenda a tarefa <parameter>task</parameter> para execução em paralelo, passando <parameter>argv</parameter> no momento da execução.
</para>
</simpara>
</refsect1>
@@ -33,17 +32,17 @@
<varlistentry>
<term><parameter>task</parameter></term>
<listitem>
<para>
<simpara>
Uma <classname>Closure</classname> com características específicas.
</para>
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>argv</parameter></term>
<listitem>
<para>
<simpara>
Um <type>array</type> de argumentos com características específicas a ser passado para <parameter>task</parameter> no momento da execução.
</para>
</simpara>
</listitem>
</varlistentry>
</variablelist>
@@ -69,14 +68,14 @@
</simplelist>
</para>
<note>
<para>
<simpara>
Fechamentos aninhados podem usar yield ou referências, mas não devem conter declarações de classe ou funções nomeadas.
</para>
</simpara>
</note>
<note>
<para>
<simpara>
Nenhuma instrução é proibida nos arquivos que a tarefa pode incluir.
</para>
</simpara>
</note>
</refsect1>
@@ -90,76 +89,75 @@
<member>objetos internos (veja notas)</member>
</simplelist>
<note>
<para>
<simpara>
No caso de recursos de fluxo de arquivo, o recurso será convertido para o descritor de arquivo e passado como <type>int</type> sempre que possível. Isso não é suportado no Windows.
</para>
</simpara>
</note>
</para>
</refsect1>
<refsect1 role="object-characteristics">
<title>Notas sobre Objetos Internos</title>
<para>
<simpara>
Objetos internos geralmente usam uma estrutura personalizada que não pode ser copiada por valor com segurança. Atualmente, o PHP não possui o mecanismo necessário para fazer isso (sem serialização).
Portanto, apenas objetos que não usam uma estrutura personalizada podem ser compartilhados.
</para>
<para>
</simpara>
<simpara>
Alguns objetos internos não usam uma estrutura personalizada, por exemplo <classname>parallel\Events\Event</classname> e, portanto, podem ser compartilhados.
</para>
<para>
</simpara>
<simpara>
Closures são um tipo especial de objeto interno e suporte que estão sendo copiados por valor e, portanto, podem ser compartilhadas.
</para>
<para>
</simpara>
<simpara>
Os canais são essenciais para escrever código paralelo e oferecem suporte ao acesso e execução simultâneos por necessidade e, portanto, podem ser compartilhados.
</para>
</simpara>
<warning>
<para>
<simpara>
Uma classe de usuário que estende uma classe interna pode usar uma estrutura personalizada, conforme definida pela classe interna, e nesse caso não pode ser copiada por valor com segurança,
e, portanto, não pode ser compartilhada.
</para>
</simpara>
</warning>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<warning>
<para>
<simpara>
O <type>parallel\Future</type> retornado não deve ser ignorado quando a tarefa contém uma instrução return ou throw.
</para>
</simpara>
</warning>
</refsect1>
<refsect1 role="exceptions">
<title>Exceções</title>
<warning>
<para>
<simpara>
Lança uma exceção <type>parallel\Runtime\Error\Closed</type> se <type>parallel\Runtime</type> tiver sido fechada.
</para>
</simpara>
</warning>
<warning>
<para>
<simpara>
Lança uma exceção <type>parallel\Runtime\Error\IllegalFunction</type> se <parameter>task</parameter> é uma closure criada a partir de uma função interna.
</para>
</simpara>
</warning>
<warning>
<para>
<simpara>
Lança uma exceção <type>parallel\Runtime\Error\IllegalInstruction</type> se <parameter>task</parameter> contiver instruções ilegais.
</para>
</simpara>
</warning>
<warning>
<para>
<simpara>
Lança uma exceção <type>parallel\Runtime\Error\IllegalParameter</type> se <parameter>task</parameter> aceitar ou <parameter>argv</parameter> contiver variáveis ilegais.
</para>
</simpara>
</warning>
<warning>
<para>
<simpara>
Lança uma exceção <type>parallel\Runtime\Error\IllegalReturn</type> se <parameter>task</parameter> retornar ilegalmente.
</para>
</simpara>
</warning>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 52bf027d4cb01fee7d4e33095d3c5ecd6f76fff1 Maintainer: leonardolara Status: ready -->
<refentry xml:id="parallel-sync.construct" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: leonardolara Status: ready -->
<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>Construção</refpurpose>
@@ -11,33 +10,32 @@
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <methodname>parallel\Sync::__construct</methodname>
<void />
<void/>
</methodsynopsis>
<para>
<simpara>
Constrói um novo objeto de sincronização sem nenhum valor.
</para>
</simpara>
<methodsynopsis>
<modifier>public</modifier> <methodname>parallel\Sync::__construct</methodname>
<methodparam><type>scalar</type><parameter>value</parameter></methodparam>
</methodsynopsis>
<para>
<simpara>
Constrói um novo objeto de sincronização contendo o valor escalar fornecido.
</para>
</simpara>
</refsect1>
<refsect1 role="exceptions">
<title>Exceptions</title>
<warning>
<para>
<simpara>
Lança uma exceção <type>parallel\Sync\Error\IllegalValue</type> se <parameter>value</parameter> não for escalar.
</para>
</simpara>
</warning>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 11b2d542a897f52477053764941ef6b5ce9b78dd Maintainer: leonardolara Status: ready -->
<refentry xml:id="parallel-sync.get" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: leonardolara Status: ready -->
<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>Acesso</refpurpose>
@@ -11,16 +10,15 @@
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>scalar</type><methodname>parallel\Sync::get</methodname>
<void />
<void/>
</methodsynopsis>
<para>
<simpara>
Retorna automaticamente o valor do objeto de sincronização.
</para>
</simpara>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: d9ecfba6ad07e4e0b1b13ed1f0592f09d2e2f5c9 Maintainer: leonardolara Status: ready -->
<refentry xml:id="parallel-sync.invoke" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: leonardolara Status: ready -->
<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>Sincronização</refpurpose>
@@ -13,14 +12,13 @@
<modifier>public</modifier> <methodname>parallel\Sync::__invoke</methodname>
<methodparam><type>callable</type><parameter>critical</parameter></methodparam>
</methodsynopsis>
<para>
<simpara>
Entra exclusivamente no código crítico.
</para>
</simpara>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: d9ecfba6ad07e4e0b1b13ed1f0592f09d2e2f5c9 Maintainer: leonardolara Status: ready -->
<refentry xml:id="parallel-sync.notify" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: leonardolara Status: ready -->
<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>Sincronização</refpurpose>
@@ -13,14 +12,13 @@
<modifier>public</modifier> <methodname>parallel\Sync::notify</methodname>
<methodparam choice="opt"><type>bool</type><parameter>all</parameter></methodparam>
</methodsynopsis>
<para>
<simpara>
Notifica um (por padrão) ou todos os threads aguardando o objeto de sincronização.
</para>
</simpara>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 52bf027d4cb01fee7d4e33095d3c5ecd6f76fff1 Maintainer: leonardolara Status: ready -->
<refentry xml:id="parallel-sync.set" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: leonardolara Status: ready -->
<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>Acesso</refpurpose>
@@ -13,23 +12,22 @@
<modifier>public</modifier> <methodname>parallel\Sync::set</methodname>
<methodparam><type>scalar</type><parameter>value</parameter></methodparam>
</methodsynopsis>
<para>
<simpara>
Define atomicamente o valor do objeto de sincronização.
</para>
</simpara>
</refsect1>
<refsect1 role="exceptions">
<title>Exceptions</title>
<warning>
<para>
<simpara>
Lança uma exceção <type>parallel\Sync\Error\IllegalValue</type> se <parameter>value</parameter> não for escalar.
</para>
</simpara>
</warning>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: d9ecfba6ad07e4e0b1b13ed1f0592f09d2e2f5c9 Maintainer: leonardolara Status: ready -->
<refentry xml:id="parallel-sync.wait" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: leonardolara Status: ready -->
<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>Sincronização</refpurpose>
@@ -11,16 +10,15 @@
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <methodname>parallel\Sync::wait</methodname>
<void />
<void/>
</methodsynopsis>
<para>
<simpara>
Aguarda notificação sobre este objeto de sincronização.
</para>
</simpara>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,60 +1,59 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: c7e29d3ab5328b52f83edb88bde973e211a37659 Maintainer: fernandowobeto Status: ready --><!-- CREDITS: fernandowobeto -->
<chapter xml:id="philosophy.parallel" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: fernandowobeto Status: ready -->
<!-- CREDITS: fernandowobeto -->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="philosophy.parallel">
<title>Filosofia</title>
<para>
<simpara>
Esta seção contém filosofias importantes para escrever código paralelo e alguns detalhes sobre a implementação interna do parallel.
</para>
</simpara>
<simplesect role="sharing">
<title>Não se comunique compartilhando memória; em vez disso, compartilhe a memória comunicando-se.</title>
<para>
<simpara>
Essa filosofia abraçada pelo parallel tem sua origem no Go, uma das plataformas mais admiradas, senão mais utilizadas, para escrever código paralelo no momento.
Os programadores Go precisam trabalhar duro para atingir esse ideal: PHP e parallel fazem todo o trabalho duro para o programador, e por padrão.
</para>
<para>
</simpara>
<simpara>
Em modelos convencionais de threading encontrados em outras linguagens, geralmente os threads se comunicam entre si apenas pelo fato de
operarem no mesmo espaço de endereço.
O programador deve implantar exclusão mútua, variáveis de condição e outras primitivas de threading ou sincronização de baixo nível para garantir a comunicação adequada
de estado e consistência.
</para>
<para>
</simpara>
<simpara>
Quando o modelo convencional é invertido, significa que as threads só compartilham memória como resultado da comunicação (uma variável é passada por um Channel, por exemplo).
</para>
<para>
</simpara>
<simpara>
Quando o parallel passa uma variável de um thread para outro por qualquer meio - argumentos de Task, retorno via Future e Channels - ela é passada por valor.
Em todos os casos, exceto no caso de canais sem buffer, a variável também é armazenada em buffer para que não possa ser alterada (ou destruída) antes de ser usada em qualquer thread para o qual a variável
está sendo passada. Uma leitura sem buffer em um channel é a única instância em que um thread lê diretamente a memória alocada por outro thread. Ele pode fazê-lo com segurança porque
o thread que possui a memória está aguardando que a leitura seja concluída antes que possa continuar a manipulá-la, e o thread que não possui a memória lê por valor. Quando
ambos os threads continuam, eles não estão mais compartilhando memória.
</para>
<para>
</simpara>
<simpara>
Isso torna a escrita e o raciocínio sobre código paralelo muito mais fáceis do que o modelo convencional de threading. Isso significa que o programador não precisa considerar que threads
podem estar manipulando dados simultaneamente, porque isso não é possível.
</para>
<para>
</simpara>
<simpara>
Isso também torna o PHP a plataforma perfeita para implementar uma API de simultaneidade paralela baseada em CSP (passagem de mensagens por canais), porque o PHP em si não é compartilhado -
threads PHP operam em seu próprio espaço de endereço virtual por padrão e, portanto, só podem compartilhar memória comunicando-se.
</para>
</simpara>
</simplesect>
<simplesect role="owning">
<title>Os dados devem ter um único proprietário definitivo</title>
<para>
<simpara>
Ao abordar o modelo CSP pela primeira vez, um programador versado no modelo tradicional de threading pode se encontrar procurando estruturas de dados simultâneas,
porque é por isso que elas também são usadas: elas passam objetos compartilhados para manipulação.
</para>
<para>
</simpara>
<simpara>
Quando se trata do modelo CSP, não há necessidade de as estruturas de dados serem compartilhadas por muitas tarefas e, na verdade, é mais simples se não forem. Os dados devem pertencer
a uma única tarefa, as alterações (ou operações) nessa estrutura de dados devem ser comunicadas através de canais e executadas pelo proprietário dos dados, o sucesso, a falha
ou o resultado (estado) da alteração (ou operação) sendo comunicado de volta.
</para>
<para>
</simpara>
<simpara>
Mais uma vez a natureza de zero compartilhamento do PHP e a natureza de cópia por valor do parallel ajudam o programador a atingir esse objetivo, nenhum dado será compartilhado por acidente,
e sim apenas como resultado de comunicação.
</para>
</simpara>
</simplesect>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,45 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: cd79fb394a828438dd73e32f53f0a2e96f3722b3 Maintainer: fernandowobeto Status: ready --><!-- CREDITS: fernandowobeto,leonardolara -->
<chapter xml:id="parallel.setup" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: fernandowobeto Status: ready -->
<!-- CREDITS: fernandowobeto,leonardolara -->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="parallel.setup">
<title>Instalação</title>
<simplesect xml:id="parallel.requirements">
&reftitle.required;
<para>
<simpara>
parallel requer uma compilação de PHP com ZTS (Zend Thread Safety) habilitado
(<option role="configure">--enable-zts</option>, ou em sistemas não-Windows anteriores ao PHP 8.0.0,
<option role= "configure">--enable-maintainer-zts</option>)
</para>
<option role="configure">--enable-maintainer-zts</option>)
</simpara>
<caution>
<para>
<simpara>
Zend Thread Safety não pode ser habilitado após a construção; é uma opção de configuração de tempo de construção.
</para>
</simpara>
</caution>
<para>
<simpara>
parallel deve ser construído em qualquer lugar onde haja um cabeçalho Posix Threads funcional (pthread.h) e uma compilação ZTS de PHP, incluindo Windows (usando o projeto pthread-w32 do redhat).
</para>
</simpara>
</simplesect>
<simplesect xml:id="parallel.installation">
&reftitle.install;
<para>
<simpara>
Versões do parallel são hospedadas pelo PECL e o código-fonte pelo
<link xlink:href="&url.git.hub;krakjoe/parallel">github</link>,
o caminho mais fácil para instalação é a rota normal do PECL:
<link xlink:href="&url.pecl.package;parallel">&url.pecl.package;parallel</link>.
</para>
<para>
</simpara>
<simpara>
Usuários do Windows podem baixar binários de versão pré-construídos no site <link xlink:href="&url.pecl.package;parallel">PECL</link>.
</para>
</simpara>
<caution>
<para>
<simpara>
Usuários do Windows precisam realizar a etapa adicional de incluir os arquivos <filename>pthreadVC<replaceable>?</replaceable>.dll</filename> (distribuído com as versões do Windows) ao seu <envar>PATH</envar>.
</para>
</simpara>
</caution>
</simplesect>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml