说明:阿瓦尔
如何在C11中使用线程安全的初始化程序来初始化全局变量。
概述
avar在C11中支持跨平台的线程安全静态初始化。 C ++ 11支持非平凡构造的全局变量的线程安全初始化,这意味着通过运行代码初始化的变量。 在C11中以便携式方式很难做到这一点。 问题在于阻止其他线程在初始化期间访问全局状态,并且这样做需要一个无锁原子和一个睡眠锁。
这些是C初始化支持的要求:
初始化功能只能运行一次。
任何时候都不应有意外的比赛情况。
应该是无锁的,仅在初始化后使用原子操作。
线程安全和跨平台
<weixin_42097369> 上传 | 大小:3kb