Menu

Compétence : Multithreading

Concevoir et implémenter des systèmes logiciels exploitant le multithreading ou la programmation concurrente, en structurant efficacement les tâches parallèles, en synchronisant les accès aux ressources partagées et en garantissant la stabilité, la performance et l'absence de race conditions. Mobiliser des techniques adaptées telles que les files de messages, verrous, tâches asynchrones, ou architectures lock-free, selon les contraintes.

Niveaux dans la compétence

1 - Reconnaître les principes de base du multithreading et de la concurrence. Exemple : expliquer la différence entre exécution séquentielle et parallèle, et identifier ce qu'est une “race condition”.,2 - Utiliser des structures de base pour exécuter des tâches en parallèle. Exemple : utiliser std::thread ou std::async pour paralléliser un traitement indépendant.,3 - Structurer un traitement en assurant la sécurité des accès partagés. Exemple : utiliser un mutex pour protéger une ressource entre plusieurs threads.,4 - Concevoir un système multithreadé robuste et performant. Exemple : répartir des traitements via un job system avec file de tâches concurrentes.,5 - Diagnostiquer des problèmes complexes liés à la concurrence et concevoir des architectures adaptées aux contraintes d'exécution parallèle. Exemple : identifier des goulets d'étranglement dans un système multithreadé et restructurer les traitements via un scheduler ou job system modulaire pour en améliorer la scalabilité.,6 - Définir et expérimenter des modèles d'exécution parallèle innovants, et contribuer à l'évolution des pratiques sectorielles dans le domaine du multithreading moteur. Exemple : concevoir un nouveau paradigme d'exécution massivement parallèle adapté aux moteurs temps réel, validé en production et partagé dans des conférences ou publications de référence.

Activités associées

Métiers associés