Tout le monde sait ce que gcc fait avec les expressions passées comme valeur pour les builtins atomiques. Considérez la fonction ci-dessous. Gcc va-t-il garantir l'atomicité de cette opération? (Même si les cycles supplémentaires sont nécessaires pour calculer 2 << nr
?Expressions dans les opérateurs atomiques gcc
static inline test_and_set_bit(volatile void *addr, int nr, int set) {
__sync_fetch_and_or(addr, set ? 2 << nr : 0);
}
Merci!
Donc d'abord l'expression sera évaluée, puis l'opération atomique? C'est ce que je pensais qu'il allait se passer, mais il est bon d'avoir une confirmation. Merci! –