• [^] # Re: templates variadiques

    Posté par . En réponse à la dépêche Le standard C++0x a enfin été voté. Évalué à 3.

    Euh non, là il s'agit de mémoire partagée entre plusieurs threads, je pense. Du coup tu as un compteur "global" qui compte le nombre d'utilisations dans tous les threads.

    L'opération atomique doit se faire sur ce compteur global.

    Par exemple, imagine qu'un thread prenne une référence à un objet qui a déja 10 références: on doit incrémenter le compteur et le passer à 11. Manque de bol le thread est interrompu pendant l'opération, un aute thread prend le relai et incrémente le compteur. L'opération de l'autre thread n'est pas finie et le compteur est toujours à 10 en RAM par exemple ... il passe à 11.

    Retour au thread précédent : il est en pleine incrémentation du 10 à 11 et termine : il passe le compteur à 11.

    Oups, on a donc 12 référence avec un compteur à 11. On doit absolument garantir que l'incrémentation ne soit pas interruptible en cours de route, c'est ce qu'on appelle une instruction atomique.