• [^] # Re: u32++ n'est pas atomique

    Posté par (site web personnel, Mastodon) . En réponse au journal Découverte de rust pour l'embarqué 2. Évalué à 3 (+2/-0).

    Merci pour ton commentaire. En effet, dans ce bout de code isolé le volatile n'est pas nécessaire. Mais l'idée était de faire une attente non bloquante, donc venir comparer régulièrement la valeur de COUNT avec une valeur de référence.

    Par exemple:

    static int count = 0;
    // IRQ
    void foo() {
     count+=1;
    }
    int main(){
     int a = 0;
     for(;;){
     if(count > 10){
     a = 10;
     }
     }
     return 0;
    }

    Et dans ce cas le volatile me semble indispensable.

    Pour la remarque b, c'est aussi vrai. Cependant dans notre cas, il n'y a que l'interruption qui modifie la valeur de COUNT, tous les autres accès ne sont qu'en lecture.