Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Programação paralela com PHP - Extensão pthreads

Vinicius Dias
September 20, 2018

Programação paralela com PHP - Extensão pthreads

Introdução à programação paralela com PHP utilizando a extensão pthreads.

Ao contrário do que muitos podem pensar, o PHP é sim pronto para um ambiente multithreaded, e a extensão pthreads traz ao usuário uma API fácil e amigável, para usufruir de threads de verdade (e não as famigeradas green threads).

Como pré-requisitos para aproveitar melhor esta palestra, é interessante ter conhecimentos básicos de PHP, Orientação a Objetos, e, preferencialmente, conhecimento de como funciona o mundo multithreaded.

Vinicius Dias

September 20, 2018
Tweet

More Decks by Vinicius Dias

Other Decks in Programming

Transcript

  1. Quem é Vinicius Dias? • Zend Certified (PHP) Engineer; •

    iMasters Certified PHP Professional; • Amante de boas práticas; • Desenvolvedor Full Stack há 3 anos; LinkedIn: https://linkedin.com/in/vinícius-dias/ GitHub: https://github.com/CViniciusSDias
  2. Paralelismo é a habilidade de executar mais de uma tarefa,

    de forma paralela, ou seja, realmente ao mesmo tempo, possibilitando que um grande problema seja dividido em partes menores, e assim resolvidos simultaneamente.
  3. O que são Threads ? Uma thread é a parte

    do processo responsável por executar determinada tarefa na CPU. Por PADRÃO, cada processo tem 1 Thread, chamada de Thread principal. Um processo com várias threads pode realizar diversas tarefas em paralelo.
  4. Vantagens de utilizar Threads • Aumento de desempenho (o mais

    óbvio); • Melhor aproveitamento dos recursos do dispositivo; • Menor custo se comparado ao de criar processos; • Compartilhamento de memória entre as Threads de um mesmo processo.
  5. Threads em PHP • Utiliza-se a extensão pthreads; • São

    threads reais, e não as famigeradas green threads; • Tem sua API toda utilizando Orientação a Objetos; • A extensão foi renovada e reescrita para o PHP 7;
  6. Sincronização de Threads • Thread::join(); • Threaded::synchronized(Closure $block, […$args]); •

    Threaded::wait([int $timeout]); • Threaded::notifyOne(); • Threaded::notify();
  7. Vantagens da PHT sobre pthreads • Sem serialização de propriedades

    de recursos compartilhados; • Possibilidade de criar threads a partir de funções e arquivos (além de classes); • Possibilidade de implementar uma interface Runnable ao invés de herdar Thread.
  8. Vantagens da pthreads sobre PHT • Utiliza blocos de sincronização

    ao invés de mutex (menos chance de dar m…); • Comunicação mais fácil entre threads; • Mais madura e testada.
  9. Referências • https://github.com/CViniciusSDias/exemplo-php-threads • https://github.com/krakjoe/pthreads • https://gist.github.com/krakjoe/6437782 • http://php.net/manual/en/book.pthreads.php •

    https://www.sitepoint.com/parallel-programming-pthreads-php-fundamentals/ • https://madewithlove.be/thread-carefully/ • https://github.com/tpunt/pht