
Patterns de concurrence
Worker pools, pipelines, fan-out/fan-in, cancellation, context, errgroup, semaphores
1Qu'est-ce qu'un worker pool dans Go ?
Qu'est-ce qu'un worker pool dans Go ?
Réponse
Un worker pool est un pattern de concurrence qui utilise un nombre fixe de goroutines (workers) pour traiter des tâches provenant d'un canal partagé. Ce pattern permet de limiter le nombre de goroutines actives et contrôler la consommation de ressources système. Contrairement à la création d'une goroutine par tâche, le worker pool réutilise un ensemble de workers pour traiter un grand volume de tâches de manière efficace.
2Quel est l'avantage principal d'utiliser un worker pool plutôt que de créer une goroutine par tâche ?
Quel est l'avantage principal d'utiliser un worker pool plutôt que de créer une goroutine par tâche ?
Réponse
Limiter le nombre de goroutines actives permet de contrôler la consommation de ressources système (mémoire et CPU) et d'éviter la surcharge. Créer une goroutine par tâche peut entraîner des milliers ou millions de goroutines simultanées, saturant le scheduler et épuisant la mémoire. Le worker pool maintient un nombre optimal de workers qui traitent les tâches séquentiellement, garantissant des performances prévisibles même sous charge élevée.
3Qu'est-ce qu'un pipeline dans le contexte de la concurrence en Go ?
Qu'est-ce qu'un pipeline dans le contexte de la concurrence en Go ?
Réponse
Un pipeline est une série d'étapes connectées par des canaux, où chaque étape est un groupe de goroutines exécutant la même fonction. Chaque étape reçoit des données via des canaux d'entrée, effectue un traitement, puis envoie les résultats via des canaux de sortie. Ce pattern permet de décomposer des traitements complexes en étapes simples et réutilisables, facilitant la composition et le test de chaque composant indépendamment.
Comment fermer correctement un canal dans un worker pool pour signaler la fin du traitement ?
Quelle est la différence entre fan-out et fan-in ?
+21 questions d'entretien
Autres sujets d'entretien Go
Les bases de Go
Structures de données Go
Interfaces Go
Gestion des erreurs
Goroutines basiques
Channels
Go Modules
Serveur HTTP
Client HTTP
Encodage JSON
database/sql
Package context
Testing
Primitives de synchronisation
Frameworks web Go
Design d'API REST
gRPC
Reflection
Gestion mémoire
Optimisation des performances
Generics
Design Patterns Go
Microservices
Sécurité & Authentication
Docker & Containerization
Kubernetes Basics
Go Avancé
Développement CLI
Maîtrise Go pour ton prochain entretien
Accède à toutes les questions, flashcards, tests techniques, exercices de code review et simulateurs d'entretien.
Commencer gratuitement