Programação Concorrente com Pthreads e Linguagem C
Linux POSIX Threads (Pthreads), Sincronização entre Threads, Mutex, Variável Condição, Linguagem C
Description
Este curso trata da criação de programas com múltiplas threads (multithread, multitarefa). As threads podem executar em paralelismo real, no caso de processadores multicore, ou pseudo-paralelismo através do escalonamento provido pelo sistema operacional. As threads trocam dados através de variáveis compartilhadas e usam mecanismos de sincronização para coordenar suas execuções.
Embora os conceitos apresentados no curso sejam válidos para diferentes linguagens de programação e sistemas operacionais, vamos utilizar especificamente a linguagem de programação C e a biblioteca Pthreads disponível no Linux para os exemplos.
Ao longo de todo o curso a ênfase está na programação. As abstrações e primitivas presentes nas Pthreads são descritas através de códigos exemplo funcionais, ou seja, que compilam e executam. As aulas são apresentadas a partir de código exemplo completo, o qual fica disponível para download como um recurso do curso.
O padrão POSIX Threads (Pthreads) foi criado pela IEEE para padronizar a utilização de threads em diversos sistemas. Atualmente existem implementações da API Pthreads para várias linguagens e sistemas operacionais. Ele é muito utilizado, em particular, no desenvolvimento de aplicações do tipo "embedded system" e "Internet das Coisas".
No curso são apresentados inicialmente os conceitos que norteiam a programação concorrente em geral e a programação multithread em particular. Em seguida são mostrados os aspectos básicos tais como criar thread, esperar por thread, sincronizar threads, etc. Finalmente, são explorados os recursos mais avançados da API Pthreads, tais como sincronização em barreira e do tipo leitor/escritor. Também serão tratados aspectos fundamentais como deadlocks, exclusão mútua, atomicidade, condições de corrida e outros.
Ao final do curso é desenvolvido um pequeno projeto para ilustrar os diversos conceitos e recursos apresentados ao longo das aulas.
Em termos de ferramentas computacionais, será usado apenas um computador com o sistema operacional Linux, um editor de texto (gedit ou outro qualquer) e o compilador gcc. Também é possível usar um computador Windows com o WSL2 instalado. É claro que alunos acostumados com outros ambientes de programação, tais como as IDE Visual Studio Code ou Eclipse, podem usa-las. Porém elas não fazem parte do escopo do curso.
What You Will Learn!
- Fundamentos da programação concorrente
- Programação usando threads na linguagem C
- Mutexes, variáveis condição, barreiras e outros mecanismos de sincronização
- Criação e emprego de pool de threads
- Como escrever código seguro usando threads com a biblioteca Pthreads no Linux
Who Should Attend!
- Desenvolvedores de software que precisam usar threads em suas aplicações
- Alunos de graduação e pós-graduação em cursos de engenharia e de computação
- O curso foi pensado para estudantes e profissionais que desejam desenvolver aplicações usando múltiplas threads no contexto da API Pthreads
- Embora no curso seja utilizada a linguagem C no Linux, a biblioteca Pthreads está disponível para várias outras linguagens de programação e sistemas operacionais