Concorrência
Scheduler
Deadlocks, Livelocks e starvation
O que é CSP?
Go Routines
Wait Group (pacote sync)
Preemptivo ou cooperativo?
Não deveria ser mais simples?
Não quero mudar meu algoritimo
Não precisa ser tudo ou nada.
Um mapa sincronizado de graça
Comparando sync.Map vs. Map + Mutex
Como eu sei que não vai dar errado?
Contador no loop
Variavel compartilhada acidentalmente
Variavel global desprotegida
Variavel primitiva desprotegida
O custo do detector data race
Penalidades de performance
Extra: Semaphore (sync package)
intro
Quando usar?
Cenarios do mundo real
exercicios
Extra: Single Flight (sync package)
intro
Quando usar?
Cenarios do mundo real
exercicios
intro
Guidelines
Garantias, latência e estado
Generators
exercicios
Cenarios do mundo real
Channel as Handle
exercicios
Cenarios do mundo real
Multiplexing
exercicios
Cenarios do mundo real
Essa é a melhor ferramenta para o trabalho?
Como evitar vazamento de goroutines
mutex vs channels vs outros
guidelines
Um por todos e todos por um
Fan In
Fan Out
error handling
Pipeline
for-select loop
Tee Channel
or-done channel
Bridge Channel
heart beat
(em breve mais)
sync.Pool
exemplo
exercicio
Garantindo uma unica execução da função
sync.Once
exemplo
exercicio
sync.Cond
exemplo
exercicio
Recuperando goroutines não saudaveis.
Cache com TTL
Graceful shutdown em um servidor ouvindo em multiplas portas
Connection Pool
Goroutine errors
Go Runtime
Muito bom!