12

Delphi Parallel Programming Library

Embed Size (px)

Citation preview

Apresentao do PowerPoint

Delphi Parallel Programming LibraryMrio Guedes [email protected]

Mrio?Gerente de Desenvolvimento na Contact Studio SoftwareEstamos contratando!http://www.g4solutions.com.br/trabalhe-conosco/

Desenvolvedor Delphi, Python, JS e noSQL15+ anos na lidaFilho de Valdete e JoselitoIrmo do Manoel, da Jenny e do JonhyPai do Jlio e da FernandaE noivo da Tamires

PPLBiblioteca de Programao Paralela

Presente desde o Delphi XE7

Recurso nativo da linguagem (RTL)

Multiplataforma!Seja no mobile, seja no Win32 o cdigo o mesmo.

Sexy sem ser vulgar: SMART

Principal ganhoDeixamos de criar threads explicitamente

Sem perder a chance de paralelizar as tarefas

Isso diminui a disperso de regras nos cdigos

E ganhamos aplicativos mais responsivos!

Comece a pensar em tarefas, tarefas paralelas.Petar Georgiev

Sncrono X AssncronoVamos fazer valer esse monte de processador ai na sua mquina ou dispositivo?

Clculo complexoDownloadsProcessamento de arquivosConsumo de servios RESTConsulta banco de dados

Tudo isto de forma no bloqueante!

ArsenalUnit mgica: System.Threading

Trs usos primrios:TThreadPoolTTask e ITaskIFutureParalelismo em estrutura de repetio

TThreadPool.DefaultConjunto de threads prontas a lhe servir!

Possui um mecanismo sofisticado de gesto destas threads.Algoritmo Work Stealing Thread Queue

.QueueWorkItem() Enfileira uma tarefa para execuo. Pode ser passado:TNotifyEventTProc Mtodo annimo

Podemos consultar ou definir a quantidade de trabalhadores com:.MinWorkerThreads()- SetMinWorkerThreads().MaxWorkerThreads()- SetMaxWorkerThreads()

TParallelTem por objetivo paralelizar tarefas a uma s vez. uma classe selada portanto no o caso de descender dela.

.Join() Executa um conjunto de tarefas, devolvendo um ITask. Utiliza o .For() por isso o grau de paralelismo determinado internamente.

.For() Executa um lao for..to..do, sob um range executando uma tarefa para cada iterao.

TTask, ITask, IFuture TTask uma classe conveniente para tirar proveito das interfaces ITask e IFuture;

.Create() Retorna uma tarefa no agendada.Run() Agenda um ITask.Future - Agenda um IFuture.CurrentTask Retorna a tarefa corrente, conveniente para verificar o estado dela.WaitForAll Aguarda o trmino de todas as tarefas dentro de um array.WaitForAny Aguarda o trmino de ao menos uma tarefa dentro de um array

Dicas e CuidadosConhecimentos mais profundos em Threads nos trar mais possibilidades. Saiba mais em:http://eugostododelphi.blogspot.com.br/2016/10/material-sobre-threads_51.html

Cuidado com o escopo das variveis. Se mostrou mais seguro criar uma funo que retorne um mtodo annimo.

Certamente a biblioteca evoluir com o passar do tempo, vamos evoluir juntos?

@[email protected] /jmarioguedes/[email protected]@contactstudio.com