mirror of
https://github.com/php/doc-pt_br.git
synced 2026-03-23 22:52:12 +01:00
163 lines
7.6 KiB
XML
163 lines
7.6 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- EN-Revision: bf92d8bd839301de7c837d20ab1dac6c14f83bbf Maintainer: fernandowobeto Status: ready --><!-- CREDITS: fernandowobeto -->
|
|
<book xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="book.pthreads">
|
|
<?phpdoc extension-membership="pecl" ?>
|
|
<title>pthreads</title>
|
|
<titleabbrev>pthreads</titleabbrev>
|
|
|
|
<preface xml:id="intro.pthreads">
|
|
&reftitle.intro;
|
|
<simpara>
|
|
pthreads é uma API orientada a objetos que fornece todas as ferramentas necessárias
|
|
para multithreading em PHP. Aplicações PHP podem criar, ler, escrever,
|
|
executar e sincronizar com Threads, Workers e objetos Threaded.
|
|
</simpara>
|
|
<warning>
|
|
<simpara>
|
|
Esta extensão é considerada sem manutenção e inoperante.
|
|
</simpara>
|
|
</warning>
|
|
<tip>
|
|
<simpara>
|
|
Considere usar <link linkend="book.parallel">parallel</link> no lugar.
|
|
</simpara>
|
|
</tip>
|
|
<warning>
|
|
<simpara>
|
|
A extensão pthreads não pode ser usada em um ambiente de servidor web.
|
|
Threading em PHP é, portanto, restrito apenas a aplicações baseadas em CLI.
|
|
</simpara>
|
|
</warning>
|
|
<warning>
|
|
<simpara>
|
|
pthreads (v3) só pode ser usado com PHP 7.2+: Isso ocorre porque o modo ZTS
|
|
não é seguro em 7.0 e 7.1.
|
|
</simpara>
|
|
</warning>
|
|
<simpara>
|
|
A classe <classname>Threaded</classname> forma a base da
|
|
funcionalidade que permite a operação dos pthreads. Expõe métodos de sincronização
|
|
e algumas interfaces úteis para o programador.
|
|
</simpara>
|
|
<simpara>
|
|
A classe <classname>Thread</classname> permite que threads sejam criadas
|
|
simplesmente estendendo-as e implementando um método <literal>run</literal>. Quaisquer
|
|
membros podem ser gravados e lidos por qualquer contexto com uma referência ao
|
|
thread. Qualquer contexto também pode executar qualquer método público e protegido.
|
|
O corpo do método run será executado em um thread separado quando o
|
|
método <methodname>Thread::start</methodname> da implementação for
|
|
chamado a partir do contexto que o criou. Somente o contexto que cria um
|
|
thread pode iniciar e ingressar nele.
|
|
</simpara>
|
|
<simpara>
|
|
A classe <classname>Worker</classname> tem um estado persistente e estará
|
|
disponível a partir da chamada para <methodname>Thread::start</methodname> (um
|
|
método herdado) até que o objeto saia do escopo ou seja explicitamente
|
|
desligamento (via <methodname>Worker::shutdown</methodname>). Qualquer contexto com uma
|
|
referência ao objeto worker pode empilhar tarefas no Worker (via
|
|
<methodname>Worker::stack</methodname>), onde essas tarefas serão executadas
|
|
pelo worker em um thread separado. O método <literal>run</literal> de um
|
|
objeto worker será executado antes de qualquer objeto na pilha do worker,
|
|
permitindo a inicialização de recursos que os objetos a serem executados possam
|
|
necessitar.
|
|
</simpara>
|
|
<simpara>
|
|
A classe <classname>Pool</classname> é usada para criar um grupo de workers
|
|
para distribuir objetos <classname>Threaded</classname> entre eles. É a
|
|
maneira mais fácil e eficiente de usar vários threads em
|
|
aplicações PHP.
|
|
</simpara>
|
|
<caution>
|
|
<simpara>
|
|
A classe <classname>Pool</classname> não estende a classe
|
|
<classname>Threaded</classname> e, portanto, objetos baseados em pool são
|
|
considerados objetos PHP normais. Como tal, as suas instâncias não devem ser
|
|
partilhadas entre diferentes contextos.
|
|
</simpara>
|
|
</caution>
|
|
<simpara>
|
|
A classe <classname>Volatile</classname> é nova no pthreads v3. É usado
|
|
para denotar propriedades <classname>Threaded</classname> mutáveis de classes
|
|
<classname>Threaded</classname> (uma vez que agora são imutáveis por
|
|
padrão). Também é usado para armazenar arrays PHP em
|
|
contextos <classname>Threaded</classname>.
|
|
</simpara>
|
|
<simpara>
|
|
A sincronização é uma habilidade importante durante o threading. Todos os objetos
|
|
que o pthreads cria possuem sincronização integrada na forma (que será
|
|
familiar aos programadores java) de
|
|
<methodname>Threaded::wait</methodname> e
|
|
<methodname>Threaded::notify</methodname>. Chamar
|
|
<methodname>Threaded::wait</methodname> em um objeto fará com que o contexto
|
|
espere por outro contexto para chamar
|
|
<methodname>Threaded::notify</methodname> no mesmo objeto. Este mecanismo
|
|
permite uma sincronização poderosa entre objetos <classname>Threaded</classname>
|
|
em PHP.
|
|
</simpara>
|
|
<caution>
|
|
<simpara>
|
|
Quaisquer objetos destinados ao uso nas partes multithread de sua
|
|
aplicação devem estender <classname>Threaded</classname>.
|
|
</simpara>
|
|
</caution>
|
|
<simpara>
|
|
Armazenamento de dados:
|
|
Como regra geral, qualquer tipo de dados que possa ser serializado pode ser usado como membro de um objeto Threaded, ele pode ser lido e escrito a partir de qualquer contexto com uma referência ao objeto Threaded.
|
|
Nem todo tipo de dados é armazenado em série; os tipos básicos são armazenados em sua forma verdadeira.
|
|
Tipos complexos, arrays e objetos que não são encadeados são armazenados serialmente; eles podem ser lidos e gravados no Threaded Object a partir de qualquer contexto com uma referência.
|
|
Com exceção dos Objetos Threaded, qualquer referência usada para definir um membro de um Objeto Threaded é separada da referência no Objeto Threaded;
|
|
os mesmos dados podem ser lidos diretamente do Objeto Threaded a qualquer momento por qualquer contexto com uma referência ao Objeto Threaded.
|
|
</simpara>
|
|
<simpara>
|
|
Membros Estáticos:
|
|
Quando um novo contexto é criado (Thread ou Worker), geralmente eles são copiados, mas recursos e objetos com estado interno são anulados (por questões de segurança). Isso permite que eles funcionem como uma espécie de armazenamento local de threads. Por exemplo, ao iniciar o contexto, uma classe cujos membros estáticos incluem informações de conexão para um servidor de banco de dados, e a própria conexão, terá apenas as informações de conexão simples copiadas, não a conexão. Permitir que o novo contexto inicie uma conexão da mesma forma que o contexto que a criou, armazenando a conexão no mesmo local sem afetar o contexto original.
|
|
</simpara>
|
|
<caution>
|
|
<simpara>
|
|
Quando print_r, var_dump e outras funções de depuração de objetos são executadas, elas não incluem proteção recursiva.
|
|
</simpara>
|
|
</caution>
|
|
<note>
|
|
<simpara>
|
|
Recursos:
|
|
As extensões e funcionalidades que definem recursos em PHP são completamente despreparadas para este tipo de ambiente; O pthreads prevê que os recursos sejam compartilhados entre contextos; no entanto, para a maioria dos tipos de recursos, isso deve ser considerado inseguro. Deve-se ter extrema cautela e cuidado ao compartilhar recursos entre contextos.
|
|
</simpara>
|
|
</note>
|
|
<caution>
|
|
<simpara>
|
|
No ambiente em que o pthreads é executado, algumas restrições e limitações são necessárias para fornecer um ambiente estável.
|
|
</simpara>
|
|
</caution>
|
|
</preface>
|
|
|
|
&reference.pthreads.setup;
|
|
&reference.pthreads.constants;
|
|
&reference.pthreads.threaded;
|
|
&reference.pthreads.thread;
|
|
&reference.pthreads.worker;
|
|
&reference.pthreads.collectable;
|
|
&reference.pthreads.pool;
|
|
&reference.pthreads.volatile;
|
|
|
|
</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
|
|
-->
|