• # explication sommaire

    Posté par . En réponse au message petite question..... Évalué à 9.

    Cela indique au compilateur qu'à chaque fois qu'il doit faire un accès
    à la variable, il doit aller y accéder réellement en mémoire (et donc
    ne pas utiliser un registre pour la manipuler).

    Par exemple, suppose que tu aies un thread exécutant ce type
    de traitement:


    volatile int running = 1;

    void thread_1(void)
    {
    while(running)
    {
    /* ... */
    }
    }



    Et tu as un 2ème thread qui va modifier la variable "running", en la
    mettant à 0.

    Si la variable "running" n'est pas marquée "volatile", le compilo va
    utiliser un registre dans la fonction thread_1 pour la stocker, et
    ne reconsultera pas la donnée elle-même en mémoire. Ce qui fait
    que si le 2ème thread modifie cette variable, cela n'est pas pris
    en compte.

    Le "volatile" indique donc au compilo que cette valeur peut être
    modifiée de manière "extérieure".