2010-03-12 9 views
3

Je lisais http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html, et suis tombé sur ceci:Les intégrations atomiques fournies par gcc sont-elles réellement traduites dans l'exemple de code, ou est-ce uniquement à des fins d'illustration?

type __sync_and_and_fetch (type *ptr, type value, ...) 
type __sync_xor_and_fetch (type *ptr, type value, ...) 
type __sync_nand_and_fetch (type *ptr, type value, ...) 
These builtins perform the operation suggested by the name, and return the new value. That is, 
     { *ptr op= value; return *ptr; } 
     { *ptr = ~*ptr & value; return *ptr; } // nand 

Est-ce code littéral? ou est-ce juste pour expliquer ce que gcc fait atomiquement en utilisant la syntaxe c-like? Et si c'est la traduction directe, quelqu'un peut-il expliquer comment c'est atomique?

Répondre

1

Non. Le code est juste là pour illustrer le fonctionnement des fonctions.

Les fonctions atomiques ne sont pas écrites en c, mais plutôt dans le langage d'assemblage de chaque architecture. Certaines architectures n'ayant pas les instructions nécessaires pour implémenter les opérations atomiques, toutes les opérations ne sont pas valides sur toutes les architectures.