File d'attente sans verrouillage en C++ : Plongeon en profondeur dans les atomiques et l'ordonnancement de la mémoire

2025-05-30

Cet article explore les complexités des opérations atomiques et de l'ordonnancement de la mémoire en C++, aboutissant à une implémentation basique d'une file d'attente sans verrouillage. L'auteur explique méticuleusement l'indivisibilité des opérations atomiques et l'impact des différents modèles d'ordonnancement de la mémoire (relaxed, release-acquire, seq_cst) sur la programmation concurrente, en utilisant des exemples illustratifs pour montrer comment ils évitent les courses de données. Une file d'attente sans verrouillage basée sur une liste chaînée est ensuite tentée, en détaillant les opérations d'enqueue et de dequeue. Cependant, l'auteur reconnaît l'incomplétude de l'implémentation, notamment sa défaillance à traiter le problème ABA. L'article est un guide complet adapté aux lecteurs ayant une certaine expérience de la programmation concurrente en C++.