文件名称:avar:C11中的可移植线程安全初始化
文件大小:3KB
文件格式:ZIP
更新时间:2024-03-11 12:45:06
C++
阿瓦尔
如何在C11中使用线程安全的初始化程序来初始化全局变量。
概述
avar在C11中支持跨平台的线程安全静态初始化。 C ++ 11支持非平凡构造的全局变量的线程安全初始化,这意味着通过运行代码初始化的变量。 在C11中以便携式方式很难做到这一点。 问题在于阻止其他线程在初始化期间访问全局状态,并且这样做需要一个无锁原子和一个睡眠锁。
这些是C初始化支持的要求:
初始化功能只能运行一次。
任何时候都不应有意外的比赛情况。
应该是无锁的,仅在初始化后使用原子操作。
线程安全和跨平台的安全静态初始化很难。 问题是多方面的:
POSIX和Windows之间没有标准互斥锁类型。
Microsoft Visual Studio不支持
【文件预览】:
avar-master
----src()
--------avar.c(2KB)
--------thread.h(3KB)
----README.md(2KB)
----CMakeLists.txt(110B)