1. 原子操作:

原子操作指的是在执行过程中不会被别的代码所中断的操作.。分为 位 和 整型变量 两类原子操作。

typedef struct { volatile int counter; } atomic_t;

2. 原子操作函数 分为 整形原子操作 和 位原子操作

3. 整型原子操作:

void atomic_set(atomic_t *v, int i); //设置原子变量v的值为i

atomic_t v = ATOMIC_INIT(0); //定义原子变量v, 并初始化为0

atomic_read(atomic_t *v); //获得原子变量的值,返回原子变量的值

void atomic_add(int i, atomic_t *v); //原子变量+i

void atomic_sub(int i, atomic_t *v); //原子变量-i

void atomic_inc(atomic_t *v); //原子变量+1

void atomic_dec(atomic_t *v); //原子变量-1

对原子变量执行自增,自减和减操作后 ,测试其是否为0,为 0 则返回 true,否则返回 false :

int atomic_inc_and_test(atomic_t *v);

int atomic_dec_and_test(atomic_t *v);

int atomic_sub_and_test(int i, atomic_t *v);

对原子变量进行加/减,自增/自减操作,并返回新的值:

int atomic_add_return(int i, atomic_t *v);

int atomic_sub_return(int i, atomic_t *v);

int atomic_inc_return(atomic_t *v);

int atomic_sub_return(atomic_t *v);

int atomic_add_unless(atomic_t *v, int a, int u);  ( v!=u ) ? v+a,返回非0值 : 0;

int atomic_inc_not_zero(atomic_t *v);                ( v!=0 ) ? v+1,返回非0值 : 0;

atomic_dec_not_one()   这是一个宏,不等于1,返回非0值;等于1,返回0

4. 位原子操作:

void set_bit(nr, void *addr); //将addr地址的nr位 置为1

void clear_bit(nr, void *addr); //将addr地址的nr位 置为0

void change_bit(nr, void *addr); //对addr地址的nr位 反置

int test_bit(nr, void *addr); //返回addr地址的nr位

int test_and_set_bit(nr, void *addr); //将*addr 的第n位设置成1,并返回原来这一位的值

int test_and_clear_bit(nr, void *addr); //将*addr 的第n位设置成0,并返回原来这一位的值

int test_and_change_bit(nr, void *addr);

c语言只中原子变量含义,c语言中的原子操作 - osc_bkg5rgl1的个人空间 - OSCHINA - 中文开源技术交流社区...相关推荐

  1. c语言输出三门课程平均值,实验作业一 - 先奕宣202005018110的个人空间 - OSCHINA - 中文开源技术交流社区...

    缩写程序,输出以下信息: **********¥¥ ¥¥¥ This is my first C program! **********¥¥¥¥¥ int main() { printf(" ...

  2. 在C语言中数据耦合例子,耦合性 内聚加实例 - osc_yip56055的个人空间 - OSCHINA - 中文开源技术交流社区...

    基本信息 耦合性(或称"耦合度") 英文 : coupling 耦合性也叫块间联系.指软件系统结构中各模块间相互联系紧密程度的一种度量.模块之间联系越紧密,其耦合性就越强,模块之间 ...

  3. c语言分治法求众数重数_分治法求众数 - osc_twlari2q的个人空间 - OSCHINA - 中文开源技术交流社区...

    分治法求众数 Problem Description 给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数.多重集S中重数最大的元素称为 众数.例如,S={1,2,2,2,3,5}. ...

  4. linux 变量引用 和 变量的自动类型转换 c++,c++类型转换 - memristor的个人空间 - OSCHINA - 中文开源技术交流社区...

    C风格的强制类型转换(Type Cast) 不管什么类型的转换统统是:TYPE b = (TYPE)a. 缺点: 可以在任意类型之间转换,比如你可以把一个指向const对象的指针转换成指向非const ...

  5. linux文字命令窗口怎样截图,命令行中截图的小工具 - Linux就该这么学的个人空间 - OSCHINA - 中文开源技术交流社区...

    Linux 桌面上有许多用于截屏的优秀工具,比如 Ksnapshot[1] 和 Shutter[2] .甚至 GNOME 桌面自带的简易截屏工具也能够很好的工作.但是,如果你很少截屏,或者你使用的 L ...

  6. 直白点理解c 语言中的循环体,反射机制 小小谈 - osc_nnbkiac5的个人空间 - OSCHINA - 中文开源技术交流社区...

    反射机制(Reflection) [TOC] 写在前面 本文地址:https://www.cnblogs.com/oberon-zjt0806/p/11082012.html 这里是Oberon 本文 ...

  7. linux 原子类型变量,linux 原子变量 - osc_m4jd02jn的个人空间 - OSCHINA - 中文开源技术交流社区...

    持有多于 24 位. 下面的操作为这个类型定义并且保证对于一个 SMP 计算机的所有处理 器来说是原子的. 操作是非常快的, 因为它们在任何可能时编译成一条单个机器指令. void atomic_se ...

  8. 按照c语言规首字母只能是,C语言--指针 - osc_nbqoh20k的个人空间 - OSCHINA - 中文开源技术交流社区...

    [TOC] #知识内容总结 ##为什么要学习指针? 我们已经学习了如何用数组存放多个相同类型的数据并进行运算,但数组的长度在定义时必须给定以后不能再改变.如果事先无法确定需要处理数据数量,应该如何处理 ...

  9. python变量无需指定类型对吗_Python变量类型 - osc_3rgq3dae的个人空间 - OSCHINA - 中文开源技术交流社区...

    变量存储在内存中的值,这就意味着在创建变量时会在内存开辟一个空间. 基于变量的数据类型,解析器会分配指定内存,并决定什么数据可以被存储在内存中. 因此变量可以指定不同的数据类型,这些变量可以存储整数. ...

  10. php中nodethirtythree,node常用模块 - LinearLaw的个人空间 - OSCHINA - 中文开源技术交流社区...

    nodeJS和ES6 node基本用法 (1)安装nodeJS cmd输入node -v出现node版本号,表明安装成功. (2)node中的互相调用 require("./02.js&qu ...

最新文章

  1. 根据类名与字段名称取值(可用于循环取实体所有值非常好用)
  2. SLAM全栈+三维重建全栈系统学习路线!
  3. java severlet教程_javaweb-severlet
  4. 解决mysql中limit和in不能同时使用的问题
  5. Windows平台编译Webkit
  6. ORACLE工作原理小结
  7. Java Servlet和JSP教程
  8. iphone4 短信截获
  9. C#的特性Attribute
  10. java base64转bitmap,如何将Bitmap位图与base64字符串相互转换
  11. Java的“ for each”循环如何工作?
  12. python 八数码_python 处理八数码 双向BFS 拼图游戏 | 学步园
  13. Eclipse\myeclipse加载项目building workspace过久
  14. 【论文解读】LGN: 基于词典构建的中文NER图神经网络
  15. VBB 3.8.4 XSS
  16. 一个典型的高精度室内UWB定位系统是怎么炼成的?
  17. centos7.5 挂载超过2T的大硬盘步骤
  18. 栈(LIFO:后进先出)
  19. 用Unity进行网络游戏开发(一)
  20. [随笔]openpyxl的安装

热门文章

  1. 如何区分电压串联负反馈电路和电流串联负反馈电路
  2. 申请软件著作权可以加急吗?软著申请时间怎么计算的?
  3. 后缀–ize_常见词性后缀
  4. Holo 使用场景说明
  5. 一句话说明白IRQL
  6. Java 拾遗补阙 ----- 继承父类的成员变量与方法区别
  7. 简练网软考知识整理-风险应对措施之应急计划弹回计划权变措施
  8. meson和pkg-config
  9. 为知笔记保存为html,为知笔记怎么保存网页 为知笔记保存网页教程
  10. 英语单词最全的前后缀讲解