Les traitements concurrents
Ils permettent d'exécuter plusieurs tâches simultanément. Ils sont utilisés pour accroître le volume de réponse d'un traitement ou la vitesse de calcul, une partie du programme s'exécute tandis qu'une autre partie attend des informations pour poursuivre. Tous les languages modernes de programmation apportent ces possibilités. Le support apporté par la librairie standard C++ depuis 20 ans est largement supporté par les matériels (microprocesseurs) existants. Le premier objectif de la librairie standard est d'abord de répondre de manière optimale aux possibiliéts du matériel, plutôt que de s'engager dans des traitements sophistiqués de modèles de parallélisation.Ceci peut être obtenu par la construction de librairie spécifiques s'appuyant sur les facilités offertes par la librairie standard.
La librarie standard supporte des exécutions concurrentes ou de multiple filet de calcul (thread) dans un même espace d'adresse. Pour permettre cela, la librarie standard apporte des modèles de gestion mémoire et un ensemble d'utilitaire portant sur des opérations élémentaires. Cependant les exécutions concurrentes sont généralement perçues comme des possibilités de la librarie standard ou de construction à partir de celle-ci.
Nous introduisons brièvement des examples de support par la librairie standard de tâches concurrentes : threads, mutexes, lock(), pacakaged_tasks, futures. Ces caractéristiques sont construites directement selon les possibiltés du système d'exploitation, sans pénaliser les performances.
Tâches et filets (Thread)
Nous appelons tâche un calcul qui peut être mené de manière concurrente avec un autre calcul. Le filet (thread) est le niveau de représentation d'une tâche dans une programme.