在这种情况下
newNode->next = NULL;
是未定义的行为吗?
struct node {
int value;
_Atomic(struct node*) next
};
//at the initialization stage
struct node* newNode = malloc(sizeof(struct node));
newNode->next = NULL; //other threads are not able to access this node at this point
这不是“按见”的 UB。
什么时候可能会发生未定义的行为?
如果出现以下情况,可能会发生未定义的行为:
atomic_store
这样的原子操作。行 newNode->next = NULL;是安全的,不会导致未定义的行为,除非您错过以下几点: 1)内存分配成功。 2)初始化时其他线程无法访问newNode。