Visã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.