050.000 Concurrence, goroutines et synchronisation#
Goroutines et concurrence#
- Introduction à la concurrence et aux goroutines
- Création et utilisation des goroutines
- Gestion des goroutines avec sync.WaitGroup
- Parallélisme vs Concurrence
- Comparaison des goroutines avec les threads
- Techniques de programmation concurrente en Go
Canaux et communication entre goroutines#
- Introduction aux canaux (channels)
- Création et utilisation des canaux
- Types de canaux: non-buffered, buffered, unidirectionnels et bidirectionnels
- Communication entre goroutines via les canaux
- Canaux unidirectionnels et bidirectionnels
- Gestion des canaux avec close et range
Patterns de concurrence et select#
- Introduction au select
- Introduction au pattern "fan-in/fan-out"
- Utilisation de select pour gérer plusieurs canaux
- Timeouts et tickers avec select
- Implémentation de patterns de concurrence avancés
- Bonnes pratiques pour la programmation concurrente en Go
Travaux pratiques#
Calculer des factoriels en parallèle#
- Implémentation séquentielle du calcul de factoriels
- Conversion de l'implémentation en version concurrente avec goroutines et canaux
- Analyse des performances et optimisation
Développer un système de files d'attente (queue) pour traiter des tâches en parallèle#
- Conception d'un système de files d'attente
- Implémentation du système de files d'attente avec goroutines et canaux
- Gestion des erreurs et synchronisation
- Optimisation et bonnes pratiques pour le traitement en parallèle
FIN.