Curso Concurrent Programming in Go
16hVisão Geral
Simultaneidade em um dos principais recursos da linguagem Go; entretanto, aqueles que programaram apenas em linguagens onde a simultaneidade é gerenciada por meio de manipulação de threads ou outras técnicas geralmente estão acostumados a pensar em termos de desenvolvimento de um aplicativo e depois adicionar construções de simultaneidade. É necessária uma mudança de pensamento para projetar e escrever aplicativos simultâneos desde o início. Aplicações simultâneas em Go tendem a ser mais eficientes, mais simples e escaláveis como soluções para classes de problemas no mundo altamente simultâneo de hoje. Este curso começa explorando o modelo de simultaneidade Go em profundidade com análises detalhadas e baseadas em exemplos de goroutines, canais, a instrução select e outros recursos disponíveis na sincronização Go e bibliotecas relacionadas. Mais importante ainda, o uso correto e as melhores práticas para usar essas construções são abordados em profundidade, incluindo sincronização de goroutines com canais, recuperação de condições de erro e trabalho com cadeias de dependências de goroutines e muito mais. O curso continua com uma exploração dos padrões de simultaneidade Go, como multiplex/de-multiplex, fan-in/fan-out, pipe-lining, geradores de canal, daisy chains, assinante/editor e outros. Esses padrões e conceitos de simultaneidade são então usados para mostrar aos alunos como projetar um aplicativo simultâneo desde o início, começando com um modelo de design simultâneo, depois implementando o modelo em Go e testando o resultado final. A aula foi projetada para ser composta por cerca de 50% de laboratórios e exercícios práticos, cerca de 25% de teoria e 25% de aprendizado prático conduzido pelo instrutor, onde os alunos codificam junto com o instrutor.
Publico Alvo
- Este curso é destinado a programadores Go de nível intermediário que podem escrever código confortavelmente usando um nível consistente com a conclusão do curso “Introdução à programação Go para desenvolvedores” (PT20182) da ProTech.
Pre-Requisitos
- Este curso é destinado a programadores Go de nível intermediário que podem escrever código confortavelmente usando um nível consistente com a conclusão do curso “Introdução à programação Go para desenvolvedores” (PT20182) da ProTech. Os alunos que não possuem esse nível de competência em programação não conseguirão acompanhar o material. Devido às limitações de tempo, não haverá oportunidade de instruções corretivas em Go durante a aula. Este é um pré-requisito essencial.
Materiais
Inglês/Português/Lab PraticoConteúdo Programatico
- The Go concurrency CPS model.
- The go-routine in detail, usage, costs and benefits – how it is implemented.
- Channels – properties, types, buffering, how they work under the hood.
- Channels as first class objects.
- Advanced, effective and efficient select statement usage.
- Quit channels, blocking, nil channels, timeouts.
- Avoiding race problem and other classic concurrency issues by using channels.
- Goroutine synchronization with channels – blocking and listening channels.
- Cleaning up concurrent applications, handling abnormal conditions, error channels.
- Modeling a concurrent application, visual task, data and work product flows.
- Goroutine channel generators.
- Delegation and integration of work flow – fan-in/fan-out and multiplexing/de-multiplexing.
- Pipelining, filtering, daisy chaining and other concurrent patterns.
- Managing multiple channels using maps, structs and interfaces.
- Best practices for concurrent application and goroutine design.
- Dealing with legacy shared resources (eg. memory management and CGO)
- Best practices for handing deadlocks and errors.
- Working with the sync library – WaitGroups, mutexes, etc.
- Testing and debugging concurrent applications.
- Best practices and common pitfalls to avoid