Upload
mario-guedes
View
109
Download
2
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