当前位置:嗨网首页>书籍在线阅读

25-_Atomic类型限定符(C11)

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

12.5.4  _Atomic 类型限定符(C11)

并发程序设计把程序执行分成可以同时执行的多个线程。这给程序设计带来了新的挑战,包括如何管理访问相同数据的不同线程。C11通过包含可选的头文件 stdatomic.hthreads.h ,提供了一些可选的(不是必须实现的)管理方法。值得注意的是,要通过各种宏函数来访问原子类型。当一个线程对一个原子类型的对象执行原子操作时,其他线程不能访问该对象。例如,下面的代码:

int hogs;     // 普通声明
hogs = 12;    // 普通赋值

可以替换成:

_Atomic int hogs;           // hogs 是一个原子类型的变量
atomic_store(&hogs, 12);    // stdatomic.h中的宏

这里,在 hogs 中存储 12 是一个原子过程,其他线程不能访问 hogs

编写这种代码的前提是,编译器要支持这一新特性。