Go Concurrency Distilled
Ce mini-livre propose un aperçu compact des concepts de concurrence en Go avec des exemples interactifs et s'adresse plutôt aux lecteurs déjà familiers du langage. Il explique les goroutines légères, la communication via des channels (bidirectionnels, directionnels, tamponnés), l'instruction select pour gérer les cas concurrents et le pattern des pipelines pour enchaîner des traitements. Le texte détaille les primitives de synchronisation — WaitGroup, mutex/RWMutex, sémaphores implémentées par channels, sync.Cond, sync.Once, sync.Pool — ainsi que l'utilisation des opérations atomiques et la prévention des data races et conditions de course. Il couvre la gestion temporelle avec time (Timer, Ticker, time.After), l'usage de context pour annulation et délais, et présente des approches pour tester le code concurrent de manière déterministe, y compris avec synctest. Enfin, le livre aborde l'ordonnancement des goroutines par le runtime et les outils de diagnostic et de profiling (metrics, pprof, trace, flight recorder) pour surveiller et analyser les applications concurrentes en production.