Bonsoirin a écrit 1 commentaire

  • # Bug possible sur l'incrément de l'index

    Posté par  . En réponse au journal Barrières mémoire et buffers circulaires - Un résultat inattendu. Évalué à 1 (+1/-0). Dernière modification le 12 novembre 2025 à 10:43.

    Il me semble que l'incrément a.store(a.load(relaxed) + 1, release) n'est pas valide même avec le release mais je ne suis pas totalement certain. Il me semble que tu peux avoir des problèmes d'ordonnancements logiques comme :

    1. thread A lit 10

    2. thread B lit 10

    3. thread A écrit 11

    4. thread B écrit 11

    Finalement, tu te retrouverais avec un seul incrément et non deux comme attendus.

    Il me semble que dans ce genre de cas, la bonne pratique est d'utiliser une instruction CAS compare and swap comme fetch_add