volatile est un modificateur de variable qui garantit la visibilité des modifications entre les threads. Sans cela, chaque thread peut mettre en cache la valeur d'une variable dans un registre CPU ou un cache L1/L2 et ne jamais voir les modifications apportées par un autre thread. volatile désactive la mise en cache et garantit les lectures à partir de la mémoire principale.
Le problème de visibilité sans volatile