atomic_init
|
定义于头文件
<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
的内容
|
|