C语言的 您所在的位置:网站首页 atomichabits中文版介绍 C语言的

C语言的

2023-12-14 16:15| 来源: 网络整理| 查看: 265

C语言的_Atomic类型限定符(C11)

在这里插入图片描述

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

所谓原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就说,它的最小的执行单位,不可能有比它更小的执行单位,因此这里的原子实际是使用了物理学里的物质微粒的概念。

所以这里说到的原子操作,基本都包含我们三个方面所关心的语义:操作本身是不可分割的(Atomicity),一个线程对某个数据的操作何时对另外一个线程可见(Visibility),执行的顺序是否可以被重排(Ordering)。

这有点类似互斥对象对共享资源的访问的保护,但是原子操作更加接近底层,因而效率更高。

例如下面的代码:

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

可以替换成:

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

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

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

参考资料:

1.史蒂芬・普拉达. C Primer Plus (第6版) 中文版[M]. 人民邮电出版社, 2016.

2.atomic_inc 原子操作

3.C++11 并发指南(atomic 类型详解四 C 风格原子操作介绍)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有