avar:C11中的可移植线程安全初始化

时间:2024-03-11 12:45:06
【文件属性】:

文件名称:avar:C11中的可移植线程安全初始化

文件大小:3KB

文件格式:ZIP

更新时间:2024-03-11 12:45:06

C++

阿瓦尔 如何在C11中使用线程安全的初始化程序来初始化全局变量。 概述 avar在C11中支持跨平台的线程安全静态初始化。 C ++ 11支持非平凡构造的全局变量的线程安全初始化,这意味着通过运行代码初始化的变量。 在C11中以便携式方式很难做到这一点。 问题在于阻止其他线程在初始化期间访问全局状态,并且这样做需要一个无锁原子和一个睡眠锁。 这些是C初始化支持的要求: 初始化功能只能运行一次。 任何时候都不应有意外的比赛情况。 应该是无锁的,仅在初始化后使用原子操作。 线程安全和跨平台的安全静态初始化很难。 问题是多方面的: POSIX和Windows之间没有标准互斥锁类型。 Microsoft Visual Studio不支持 。 在Linux上, pthread_init_once损坏或存在细微的错误。 Windows关键部分本身需要初始化。


【文件预览】:
avar-master
----src()
--------avar.c(2KB)
--------thread.h(3KB)
----README.md(2KB)
----CMakeLists.txt(110B)

网友评论