Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works

Random project

DelphiMultithreadingBookCode

Este repositório contém todo o código-fonte dos exemplos práticos do livro "Delphi Multithreading: Threads, Concorrência, Paralelismo e Assincronismo", escrito por Cesar Romero.

View on Codeberg

Anyone may press Interesting, signed in or not. It helps others find this project.

Member rating

No ratings yet.

Sign in to rate this project.

README

Delphi Multithreading: Threads, Concorrência, Paralelismo e Assincronismo - Código-Fonte Oficial

English Edition Repository

[https://github.com/cesarliws/DelphiMultithreadingBookCodeEnglishEdition](https://github.com/cesarliws/DelphiMultithreadingBookCodeEnglishEdition)

Este repositório contém todo o código-fonte dos exemplos práticos do livro "Delphi Multithreading: Threads, Concorrência, Paralelismo e Assincronismo", escrito por Cesar Romero.

📖 Sobre o Livro

A interface travada durante uma operação demorada é o inimigo silencioso de qualquer aplicação moderna. Este livro é o mapa definitivo para dominar a programação concorrente em Delphi, guiando o leitor desde os fundamentos da TThread clássica até a maestria da moderna Parallel Programming Library (PPL).

Baseado em 30 anos de experiência em arquitetura de software, esta obra foi projetada para ser um curso de formação completo, tanto para o programador que está dando seus primeiros passos em threads quanto para o arquiteto que busca otimizar a performance em cenários de alta demanda. Ao final desta jornada, você terá a confiança e a visão arquitetural para projetar e construir aplicações Delphi que não apenas funcionam, mas que encantam o usuário com sua performance e responsividade.

Delphi Multithreading - Book Cover

🛒 Onde Comprar

O livro está disponível em formato impresso em diversas lojas ao redor do mundo.

Principal Loja para o Brasil (Impressão Nacional):

Loja Link
🇧🇷 Clube de Autores (Brasil) **[https://clubedeautores.com.br/livro/delphi-multithreading](https://clubedeautores.com.br/livro/delphi-multithreading)**
🇺🇸 Amazon.com (USA) [https://www.amazon.com/dp/6501752515](https://www.amazon.com/dp/6501752515)
🇨🇦 Amazon.ca (Canadá) [https://www.amazon.ca/dp/6501752515](https://www.amazon.ca/dp/6501752515)
🇬🇧 Amazon.co.uk (Reino Unido) [https://www.amazon.co.uk/dp/6501752515](https://www.amazon.co.uk/dp/6501752515)
🇩🇪 Amazon.de (Alemanha) [https://www.amazon.de/dp/6501752515](https://www.amazon.de/dp/6501752515)
🇫🇷 Amazon.fr (França) [https://www.amazon.fr/dp/6501752515](https://www.amazon.fr/dp/6501752515)
🇪🇸 Amazon.es (Espanha) [https://www.amazon.es/dp/6501752515](https://www.amazon.es/dp/6501752515)
🇮🇹 Amazon.it (Itália) [https://www.amazon.it/dp/6501752515](https://www.amazon.it/dp/6501752515)
🇳🇱 Amazon.nl (Holanda) [https://www.amazon.nl/dp/6501752515](https://www.amazon.nl/dp/6501752515)
🇵🇱 Amazon.pl (Polônia) [https://www.amazon.pl/dp/6501752515](https://www.amazon.pl/dp/6501752515)
🇧🇪 Amazon.com.be (Bélgica) [https://www.amazon.com.be/dp/6501752515](https://www.amazon.com.be/dp/6501752515)
🇮🇪 Amazon.ie (Irlanda) [https://www.amazon.ie/dp/6501752515](https://www.amazon.ie/dp/6501752515)
🇦🇺 Amazon.com.au (Austrália) [https://www.amazon.com.au/dp/6501752515](https://www.amazon.com.au/dp/6501752515)

O livro também é distribuído pelo Clube de Autores para: Equador, México, Nova Zelândia e Portugal.


🚀 Sobre os Projetos

Este repositório está organizado em pastas por capítulo, correspondendo à estrutura do livro. Cada projeto de exemplo foi cuidadosamente criado para demonstrar um conceito específico de concorrência de forma prática e isolada.

  • Capítulo 1: Introdução ao Processamento Concorrente e Assíncrono
pascal
* Demonstra o problema do "UI Freeze" e introduz os conceitos te??ricos fundamentais.
  • Capítulo 2: Fundamentos de Threads em Delphi (TThread básico)
pascal
* Exemplos pr??ticos de cria????o, gerenciamento de ciclo de vida e comunica????o segura com a UI usando `Synchronize` e `Queue`.
  • Capítulo 3: Sincronização de Threads
pascal
* Projetos que demonstram o uso de cada primitiva de sincroniza????o: `TCriticalSection`, `TMonitor`, `TMutex`, `TSemaphore`, `TEvent`, `TLightweightMREW`, `TCountdownEvent` e `WaitForMultipleObjects`.
  • Capítulo 4: Gerenciamento e Cancelamento de Threads
pascal
* Implementa????o de padr??es para pausa, retomada e cancelamento cooperativo (`Terminate`, `TCancellationToken`), al??m de estrat??gias de tratamento de exce????es e *retry*.
  • Capítulo 5: Alternativas Assíncronas
pascal
* Explora????o de t??cnicas de assincronismo que v??o al??m da `TThread`, incluindo comunica????o via `PostMessage` e o padr??o *Pub/Sub* com `System.Messaging`.
  • Capítulo 6: Parallel Programming Library (PPL)
pascal
* Demonstra????es do poder da PPL com `TTask`, `IFuture<T>`, `TParallel.For` e a coordena????o de m??ltiplas tarefas.
  • Capítulo 7: Tópicos Avançados em Threads
pascal
* Projetos que exploram a constru????o de um *pool* de *threads* personalizado, o uso de `TInterlocked` para performance extrema e o gerenciamento avan??ado da PPL.
  • Capítulo 8: Melhores Práticas e Depuração
pascal
* Exemplos que consolidam as melhores pr??ticas de arquitetura, como o desacoplamento de *threads*, o uso de `threadvar` e a preven????o de *deadlocks*.
  • Capítulo 9: Threads em Aplicações Mobile (Android e iOS)
pascal
* Projetos FMX que resolvem desafios do mundo real, como requisi????es REST paralelas e o processamento de imagens da galeria sem travar a UI.
  • Capítulo 10: Exemplos Úteis com PPL
pascal
* Implementa????o de padr??es de arquitetura complexos, como processamento de arquivos em lote, consumo de APIs paginadas e *pipelines* com m??quina de estado.
  • Capítulo 11: Aplicações Práticas de Banco de Dados
pascal
* A culmina????o do livro: um projeto completo que demonstra uma arquitetura concorrente de n??vel s??nior para acesso a banco de dados, usando PPL, Repository, Factory e Inje????o de Depend??ncia.

📚 Conteúdo Completo do Livro

Aqui está o sumário detalhado da obra.

1: Introdução ao Processamento Concorrente e Assíncrono

      • O Problema do Congelamento da Interface (UI Freeze)
      • O que é Processamento Concorrente e Assíncrono?
      • Uma Breve História da Concorrência: Da TThread à PPL
      • Os Verdadeiros Objetivos da Concorrência
      • O Conceito de Thread
      • Quando NÃO usar Threads (e buscar alternativas)

2: Fundamentos de Threads em Delphi (TThread básico)

      • Criando e Gerenciando Threads Simples
      • Comunicando com a Thread Principal (Synchronize e Queue)
      • Lidando com Múltiplas Threads e Dados Compartilhados
      • Threads Anônimas (TThread.CreateAnonymousThread)

3: Sincronização de Threads

      • TCriticalSection - Aprofundando na Exclusão Mútua Simples
      • TMonitor - Sincronização de Múltiplas Threads
      • TMutex - Sincronização entre Processos
      • TSemaphore - Controle de Acesso a Recursos Limitados
      • TEvent - Sinalização entre Threads
      • Otimizando Acesso Concorrente: O Padrão Leitores-Escritores
      • TCountdownEvent - Sincronizando a Conclusão de Múltiplas Tarefas
      • WaitForMultipleObjects: Espera Coordenada

4: Gerenciamento e Cancelamento de Threads

      • Início e Pausa Controlada de Threads
      • Cancelamento Gentil de Threads (Terminate e WaitFor)
      • Cancelamento Cooperativo com TCancellationToken
      • Gerenciando a Prioridade de Execução (TThread.Priority)
      • Tratamento de Exceções em Threads
      • Estratégias de Reprocessamento e Retry em Threads

5: Alternativas Assíncronas

      • PostMessage e SendMessage
      • I/O Assíncrono (Visão Geral)
      • Integração de I/O Assíncrono com Threads
      • Padrão de Execução Assíncrona na Main Thread
      • Comunicação via System.Messaging

6: Parallel Programming Library (PPL)

      • Introdução à PPL
      • O Coração da PPL: ITask para Ações e IFuture<T> para Resultados
      • TParallel.For - Paralelizando Loops
      • Coordenação de Tarefas (WaitForAll, WaitForAny)
      • Cancelamento de Tarefas PPL
      • Outros Recursos da PPL: TParallelArray

7: Tópicos Avançados em Threads

      • Criando um Thread Pool Personalizado
      • TInterlocked - Operações Atômicas
      • Gerenciamento de Memória e Multithreading
      • Gerenciamento Avançado da PPL
      • Sincronização Condicional: TConditionVariableCS

8: Melhores Práticas e Depuração

      • Organização do Código
      • Evitando Concorrência com threadvar
      • Coleções Thread-Safe
      • Prevenção de Deadlocks e Race Conditions
      • Técnicas para Minimizar Trocas de Contexto
      • Depuração de Aplicações Multithreaded
      • Problemas Comuns e Como Resolvê-los
      • Recomendações Finais

9: Threads em Aplicações Mobile (Android e iOS)

      • Introdução à Concorrência em Mobile
      • Prevenção de ANRs no Android
      • Concorrência no iOS: Regras e APIs
      • Cuidados Específicos de Cada Plataforma
      • Evolução dos Recursos para Threads Mobile
      • Requisições REST Paralelas
      • Lendo e Processando Imagens da Galeria
      • Processamento em Lote para Máxima Velocidade
      • Recomendações Finais para Mobile

10: Exemplos Úteis com PPL

      • Processamento Paralelo de Múltiplos Arquivos
      • Requisições de Rede Assíncronas com Paginação
      • Simulações e Cálculos Intensivos
      • Orquestração de Fluxos de Trabalho Complexos
      • Pipeline de Tarefas com Máquina de Estado

11: Aplicações Práticas de Banco de Dados

      • Os Princípios Inegociáveis (A Doutrina)
      • Exemplo Essencial: TDataModule em uma TThread
      • Otimização com Connection Pooling do FireDAC
      • Alternativa Sem Threads: Execução Assíncrona (amAsync)
      • Arquitetura Concorrente Completa com PPL
      • Considerações Específicas para DBExpress

Apêndice

  • Apêndice A: Guia Rápido das Primitivas de Sincronização

🐞 Feedback e Contribuições

Este livro e seu código-fonte são feitos para a comunidade. Seu feedback é fundamental!

  • Para Problemas no Código-Fonte: Se encontrar um bug, uma dificuldade para compilar, ou tiver uma sugestão de melhoria nos exemplos, por favor, abra uma Issue neste repositório.
  • Para Erros no Texto do Livro: Se encontrar um erro de digitação, uma explicação que não ficou clara, ou uma imprecisão técnica no conteúdo do livro, por favor, envie um e-mail para delphimultithreadingbook@gmail.com.

👨‍💻 Sobre o Autor

Cesar Romero é Arquiteto de Software, Embarcadero MVP e um veterano com quase 30 anos de experiência na plataforma Delphi. Palestrante e instrutor, é especialista em projetar sistemas de alta performance para Desktop, Cloud e Mobile, compartilhando ativamente seu conhecimento com a comunidade de desenvolvedores.