/mode pêche aux devinettes
Petite réflexion. Quand tu écris
std::atomic<node*> some_node = ...;
Le pointeur est atomic, mais par contre, l'objet pointé ne l'ai pas (je pense). Du coup *some_node n'est pas atomic et l'écriture some_node->next est peut être confuse (puisque l'on peut penser que le type est atomic alors que ce n'est pas le cas)
Du coup, un tel code n'est pas safe :
some_node->next = another_node;
Par contre, le code de Herb :
some_node = some_node->next;
est safe, puisque l'on transforme le type non atomic some_node->next en atomic
Partager