Ambient IT

Programmation Avancée Multithread C/C++23

Par Ambient IT

Objectifs

  • Connaître les nouveautés de C++17 à C++23.
  • Maîtriser les concepts de programmation avancés en contexte multithread

Programme

Concepts de base de la programmation multi­thread

  • Modèle de gestion de tâches et de mémoire
  • Principe du fonctionnement matériel

Les nouveautés de C++17

  • Templates and Generic Code
  • Lambda
  • Attributes
  • Syntax cleanup
  • Cleaner multi-return and flow control
    • Library additions :
    • Data types
    • Invoke stuff
  • File System TS v1
  • Nouveaux algorithmes implémentés
  • Threading : Parallelism TS v1
  • Traits : swap, is_aggregate, has_unique_object_representations

Étude des APIs POSIX/Linux

  • Threads
  • Primitives de synchronisations
  • Mémoire partagée & sémaphore SYSV, l’approche multi­process
  • Thread local storage

Le threading avec C++17

Parallélisation des algorithmes

  • Partitionnement des données
  • Modélisation des dépendances et interactions, définition du pipeline
  • Correspondance avec l’architecture
  • Réduction des données
  • Exemple de patterns

Architecture matérielle

  • Mono/multi processeur, mono/multicœur
  • « Hyperthreading »
  • Gestion des caches
  • Gestion de la mémoire et NUMA

Ordonnancement

  • Anatomie d’une tâche
  • Changement de contexte et coût en performance
  • Ordonnancement
  • L’ordonnanceur Linux
  • Gestion des priorités
  • Les queues temps-réel
  • Implémentation des primitives de synchronisation.
  • Inversion de priorité

Gestion de la mémoire

  • Mémoire virtuelle : MMU, pages et TLB
  • Les optimisations en multi­process
  • Mémoire partagée, TLS
  • Le support de NUMA

Un regard sur la latence et le temps-­réel

  • Anatomie d’un syscall
  • Latence des syscalls
  • Gestion de la mémoire et des I/O en userland

Étude et pratique des outils de développement

  • Debug multithread sur gdb/lldb
  • Kernel
    • perf
    • lockdep
    • stat
    • autre
  • La suite valgrind, intrinsic
  • Outils d’analyse et de contrôle de la gestion mémoire et des caches.
  • Outils d’analyse et de contrôle du scheduler

Étude et pratique des outils de développement

  • Thread safe containers
  • Lock­free data structure
  • Design patterns

Optimisation

  • Cache fighting & false sharing
  • Contention autour des verrous
  • Hyper­threading

Découverte des nouveautés de C++20

  • Les concepts
  • Les ranges
  • Les modules
  • Les coroutines
  • La réflexion
  • Le réseau
  • Les graphismes 2D (à la manière de Cairo)

Fonctionnalités C++ existantes supprimées

  • Suppression des trigraphes
  • Radiation des registres
  • Suppression de l’opérateur déconseillé +++.
  • Suppression des spécifications d’exception obsolètes
  • Suppression de auto_ptr

Nouveautés de C++23

  • Suffixes littéraux pour std::size_t
  • basic_string et std::basic_string_view
  • La librairie stacktrace
  • Le header
  • Suppression de la liste de paramètres vides inutiles () des expressions lambda

Formations de la même catégories (5)

M2i Formation
IoT - Développer des applications connectées avec C++ / QtPar M2i Formation
  • Développer en C++ / Qt5 dans un environnement connecté.
Orsys
C++ expert, les avancées du langage (de C++ 11 à 20)Par Orsys

Ce cours vous permettra d'assimiler les nouveautés introduites par les nouveaux standards C++. Vous couvrirez les possibilités de la programmation fonctionnelle, maîtriserez la gestion de la mémoire avec les smart pointers et exploiterez les autres nouveautés de la bibliothèque standard C++.

Arkesys
C / C++ - Programmation avancée en C++Par Arkesys
  • Coder des applications efficaces et sécurisées en termes de gestion de la mémoire via les techniques RAII ;
  • Utiliser la librairie standard proposée par le langage C++ ;
  • Mettre en œuvre une application multitâches.
Global Knowledge
Programmation en langage CPar Global Knowledge

Cette formation intensive permet aux participants d'acquérir les compétences et connaissances nécessaires pour comprendre le fonctionnement des différents mécanismes, comprendre la mise en œuvre grâce à de nombreux exercices pratiques. Les participants seront en mesure d'écrire des programmes C robustes et portables.

SQLI Institut
Développer une application graphique en C++ avec QtPar SQLI Institut
  • Maîtriser le développement d'écrans avec Qt
  • Comprendre le mécanisme de la gestion d'évènements
  • Savoir utiliser les principales API non graphiques de Qt : accès aux données, réseau, fichiers
  • Maîtriser le développement en QML avec QtQuick