mirror of
https://github.com/php/doc-pt_br.git
synced 2026-03-23 22:52:12 +01:00
134 lines
5.8 KiB
XML
134 lines
5.8 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- 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;
|
|
<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.
|
|
</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.
|
|
</simpara>
|
|
<simplesect>
|
|
<title>Runtime</title>
|
|
<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.
|
|
</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.
|
|
</simpara>
|
|
</simplesect>
|
|
<simplesect>
|
|
<title>API funcional</title>
|
|
<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>.
|
|
</simpara>
|
|
</simplesect>
|
|
<simplesect>
|
|
<title>Task</title>
|
|
<para>
|
|
Uma tarefa é simplesmente um <classname>Closure</classname> destinado à execução paralela. O <classname>Closure</classname> pode conter quase qualquer instrução, incluindo closures aninhados.
|
|
Porém, existem algumas instruções que são proibidas nas tarefas:
|
|
<itemizedlist>
|
|
<listitem>
|
|
<simpara>yield</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>operador 'use' por referência</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>declaração de classe</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>declaração de função com nome</simpara>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
<note>
|
|
<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.
|
|
</simpara>
|
|
</note>
|
|
<note>
|
|
<simpara>
|
|
Nenhuma instrução é proibida nos arquivos que a tarefa pode incluir.
|
|
</simpara>
|
|
</note>
|
|
</simplesect>
|
|
<simplesect>
|
|
<title>Future</title>
|
|
<simpara>
|
|
<classname>parallel\Future</classname> é usado para acessar o valor de retorno da tarefa e expõe uma API para cancelamento da tarefa.
|
|
</simpara>
|
|
</simplesect>
|
|
<simplesect>
|
|
<title>Channel</title>
|
|
<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.
|
|
</simpara>
|
|
</simplesect>
|
|
<simplesect>
|
|
<title>Events</title>
|
|
<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.
|
|
</simpara>
|
|
</simplesect>
|
|
<simplesect role="seealso">
|
|
&reftitle.seealso;
|
|
<simplelist>
|
|
<member><xref linkend="philosophy.parallel"/></member>
|
|
</simplelist>
|
|
</simplesect>
|
|
</preface>
|
|
|
|
&reference.parallel.setup;
|
|
&reference.parallel.philosophy;
|
|
&reference.parallel.functional;
|
|
&reference.parallel.parallel.runtime;
|
|
&reference.parallel.parallel.future;
|
|
&reference.parallel.parallel.channel;
|
|
&reference.parallel.parallel.events;
|
|
&reference.parallel.parallel.events.input;
|
|
&reference.parallel.parallel.events.event;
|
|
&reference.parallel.parallel.events.event.type;
|
|
|
|
&reference.parallel.parallel.sync;
|
|
<!--&reference.parallel.examples;-->
|
|
|
|
</book>
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
indent-tabs-mode:nil
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
vim: et tw=78 syn=sgml
|
|
vi: ts=1 sw=1
|
|
-->
|