鉴于以下情况:
让读者线程检查变量的null是否安全?明确地在C程序中?
示例代码:
主题1:
void initOnStartup()
{
ptr = malloc(10);
}
主题2:
void waitingForValue()
{
while(!ptr);
}
答案 0 :(得分:3)
不,因为赋值=
操作不是原子的。
答案 1 :(得分:3)
这不是原子的。较新版本的C(和c ++)提供以下内容。 http://en.cppreference.com/w/c/atomic/atomic_store
void atomic_store( volatile A* obj , C desired); // (since C11)
void atomic_store_explicit( volatile A* obj, C desired, memory_order order ); // (since C11)
答案 2 :(得分:2)
答案是: Is changing a pointer considered an atomic action in C? 不幸的是,它不是。想想16位x86平台上的远端指针。