• [^] # Re: Multicoeur ?

    Posté par . En réponse à la dépêche Intel libère TBB. Évalué à 1.

    > n-- (meme --n) dépend du compilateur.

    J'ai bien dit que ça dépendait du compilateur (et hardware).
    Le C ne garantit l'atomicité que pour l'accès et l'écriture (et pas pour tous les types, il n'y a que le type int qui est garantit je crois). Il (la spec du C) ne garantit pas que --n est thread safe.

    > Je t'invite a faire le test sur un quadri proc, et tu verras que --n ou ++n n'est pas forcément atomique.

    Déja fait.

    Je ne suis pas un spécialiste en assembleur, mais je ne crois pas que les choses soit aussi simple que tu le dis.

    Exemple (pour faire hypra court):
    volatile int i = 0 ; ; ; ; // volatile ou non
    Thread/cpu 1 : while(true) ++i ;
    Thread/cpu 2 : while(true) --i ;

    Les performances seront assez mauvaise car les caches des cpus ne seront pas utilisés.
    Il y a des mécanismes, dont je ne comprend rien, pour que tous les cpu voit la même mémoire. Si une partie de la mémoire centrale est en cache du cpu 1 et cpu 2 veut lire cette partie mémoire, le cache de cpu 1 est invalidé.
    Ceci n'existe pas pour tous les hardwares, mais c'est maintenant assez commun.

    Tes instructions assembleurs sous-entendent qu'il n'y a pas d'instruction pour incrémenter directement une adresse mémoire (et donc qu'un cpu puisse dire "coucou, j'utilise cette adresse mémoire"). Je n'en suis pas convaincu.