Introdução
  
   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.
  
  Aviso
   
    Esta extensão é considerada sem manutenção e inoperante.
   
   
  
  Aviso
   
    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.
   
   
  Aviso
   
    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.
   
   
  
   A classe Threaded 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.
  
  
   A classe Thread permite que threads sejam criadas
   simplesmente estendendo-as e implementando um método run. 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 Thread::start() da implementação for
   chamado a partir do contexto que o criou. Somente o contexto que cria um
   thread pode iniciar e ingressar nele.
  
  
   A classe Worker tem um estado persistente e estará
   disponível a partir da chamada para Thread::start() (um
   método herdado) até que o objeto saia do escopo ou seja explicitamente
   desligamento (via Worker::shutdown()). Qualquer contexto com uma
   referência ao objeto worker pode empilhar tarefas no Worker (via
   Worker::stack()), onde essas tarefas serão executadas
   pelo worker em um thread separado. O método run 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.
  
  
   A classe Pool é usada para criar um grupo de workers
   para distribuir objetos Threaded entre eles. É a
   maneira mais fácil e eficiente de usar vários threads em
   aplicações PHP.
  
  Cuidado
   
    A classe Pool não estende a classe
    Threaded 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.
   
   
  
   A classe Volatile é nova no pthreads v3. É usado
   para denotar propriedades Threaded mutáveis de classes
   Threaded (uma vez que agora são imutáveis por
   padrão). Também é usado para armazenar arrays PHP em
   contextos Threaded.
  
  
   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
   Threaded::wait() e
   Threaded::notify(). Chamar
   Threaded::wait() em um objeto fará com que o contexto
   espere por outro contexto para chamar
   Threaded::notify() no mesmo objeto. Este mecanismo
   permite uma sincronização poderosa entre objetos Threaded
   em PHP.
  
  Cuidado
  
   Quaisquer objetos destinados ao uso nas partes multithread de sua
   aplicação devem estender Threaded.
  
   
  
   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.
  
  
   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.
  
  Cuidado
  
   Quando print_r, var_dump e outras funções de depuração de objetos são executadas, elas não incluem proteção recursiva.
  
   
  Nota: 
   
    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.
   
  
  Cuidado
   
    No ambiente em que o pthreads é executado, algumas restrições e limitações são necessárias para fornecer um ambiente estável.