24 mar. 2013

Programmation concurrente : appels uniques, verrous, conditions

thread.jpg

L'article précédent a introduit les classes std::thread et std::atomic<> proposées par le standard C++11. La première de ces classes permet la création et la gestion de processus légers ; la seconde est utilisée pour accéder de manière atomique à une donnée particulière, ce qui permet d'implémenter certains algorithmes spécifiques (le spin lock est ainsi donné en exemple).

Ce nouveau billet va maintenant s'intéresser à deux autres primitives de synchronisations très utiles dans le domaine de la programmation concurrente : les verrous d'exclusion mutuelle (mutex) et les variables de condition (condition variables). Ces deux sujets seront traités après l'introduction d'un autre point qui, vous allez voir, va se révéler très, très intéressant.

Lire la suite...

12 mar. 2013

Programmation concurrente : threads et variables atomiques

thread.jpg

Les deux articles précédents sur ce sujet n'ont fait qu'aborder des concepts qui, certes utiles pour la compréhension des articles à venir, n'ont pas encore permis d'approcher les nouveautés de C++11 dans le domaine de la programmation concurrente. Le but de cet article est donc de rentrer enfin dans le vif du sujet, en décrivant les interfaces proposés par la librairie et les mécanismes implémentés dans le langage.

Vu l'énormité des apports à ce niveau, ce billet va se contenter d'une première approche en décrivant principalement deux points importants : les threads et les mécanismes de synchronisation.

Lire la suite...

04 fév. 2013

Programmation concurrente : introduction

threads

Sur ce blog, on a déjà parlé des fonctions lambda, des classes d'énumérateurs, des variadic templates et de pas mal d'autres choses concernant la dernière norme C++11. Il nous reste pourtant encore pas mal de sujets importants à aborder - entre les expressions constantes, les rvalue reference, la notion de sémantique de mouvement... les sujets ne manquent pas. Et parmi ces sujets d'importance, il nous en reste un qui, de part son large domaine d'application, va nécessiter plusieurs billets : il s'agit de la programmation concurrente.

Avant d'expliquer les threads et leur gestion dans le langage et dans la librairie standard C++11, j'ai souhaiter faire un petit détour afin d'expliquer ce qu'est réellement un thread et comment ceux-ci sont implémentés dans les systèmes d'exploitation modernes. Cet article revient donc sur l'historique des threads et explique certains des concepts sous-jacents.

Lire la suite...