Namespaces
Variants

atomic_init

From cppreference.net
定义于头文件 <stdatomic.h>
void atomic_init ( volatile A * obj, C desired ) ;
(C11 起)

初始化默认构造的原子对象 obj 为值 desired 。该函数不具备原子性:即使通过原子操作,来自其他线程的并发访问也会导致数据竞争。

这是一个为所有 A 类型 原子对象 定义的 泛型函数 。该参数是指向volatile原子类型的指针,用于接受非volatile和 volatile (例如内存映射I/O)原子对象的地址,当对volatile原子对象应用此操作时,volatile语义会被保留。 C 是与 A 对应的非原子类型。

未指定泛型函数的名称是宏还是具有外部链接的标识符。若为访问实际函数而抑制了宏定义(例如采用括号形式如 ( atomic_init ) ( ... ) ),或程序定义了与泛型函数同名的外部标识符,则行为未定义。

目录

参数

obj - 指向待初始化原子对象的指针
desired - 用于初始化原子对象的值

返回值

(无)

注释

atomic_init 是初始化动态分配原子对象的唯一方式。例如:

_Atomic int *p = malloc(sizeof(_Atomic int));
atomic_init(p, 42);

参考文献

  • C23 标准 (ISO/IEC 9899:2024):
  • 7.17.2.2 atomic_init 通用函数 (p: TBD)
  • C17 标准 (ISO/IEC 9899:2018):
  • 7.17.2.2 atomic_init 通用函数 (p: 201)
  • C11 标准 (ISO/IEC 9899:2011):
  • 7.17.2.2 atomic_init 通用函数 (p: 274-275)

参见

(C11) (deprecated in C17) (removed in C23)
初始化新的原子对象
(函数宏)
C++ 文档 中关于 atomic_init 的内容