原子变量的操作
来源:互联网 发布:win10重启后软件消失 编辑:程序博客网 时间:2024/04/28 23:15
原子操作,顾名思义,就是说像原子一样不可再细分。一个操作是原子操作,意思就是说这个操作是以原子的方式被执行,要一口气执行完,执行过程不能够被OS的其他行为打断,是一个整体的过程,在其执行过程中,OS的其它行为是插不进来的。
原子整数操作的使用:
常见的用途是计数器,因为计数器是一个很简单的操作,所以无需复杂的锁机制;
能使用原子操作的地方,尽量不使用复杂的锁机制;
下面举例说明原子操作的用法:
定义一个atomic_c类型的数据很简单,还可以定义时给它设定初值:
(1) atomic_t u; /*定义 u*/
(2) atomic_t v = ATOMIC_INIT(0) /*定义 v 并把它初始化为0*/
对其操作:
(1) atomic_set(&v,4) /* v = 4 ( 原子地)*/
(2) atomic_add(2,&v) /* v = v + 2 = 6 (原子地) */
(3) atomic_inc(&v) /* v = v + 1 =7(原子地)*/
如果需要将atomic_t转换成int型,可以使用atomic_read()来完成:
printk(“%d\n”,atomic_read(&v)); /* 会打印7*/
原子整数操作最常见的用途就是实现计数器。使用复杂的锁机制来保护一个单纯的计数器是很笨拙的,所以,开发者最好使用atomic_inc()和atomic_dec()这两个相对来说轻便一点的操作。
有的时候需要共享的资源可能知识一个简单的整型数值,例如在驱动程序开发中,需要对包含一个
- 原子变量的操作
- 原子变量和原子操作
- Java原子变量&原子操作
- 关于atomic_t 原子变量的操作
- 测试原子操作不同的变量
- 线程4:原子变量与原子操作
- volatile 不能保证变量的原子性的操作
- 多线程下变量原子操作的几种方法
- WINCE的原子操作
- 互锁的原子操作
- gcc的原子操作
- 内核的原子操作
- sqlite3的原子操作
- boost的原子操作
- c++ ++ ---的原子操作
- 原子操作的好处
- GCC的原子操作
- 文件的原子操作
- gridview内容居中
- Redo Log 和Checkpoint not complete
- 标准的Spring配置文件
- Constructing Roads In JGShining's Kingdom----HDU_1025----用二分法求最长单调子序列
- oracle 10g废材参数 log_archive_start
- 原子变量的操作
- ALTER DATABASE 与 ALTER TABLESPACE OFFLINE的区别
- GridView中DropDownList更新
- ADO简介
- torque安装
- sql查询两张表的同名字段时只显示第一个的信息
- Oracle corrupt block(坏块) 详解
- Spring配置文件总结
- C++命名规范