Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3355418
  • 博文数量: 1450
  • 博客积分: 11163
  • 博客等级: 上将
  • 技术积分: 11101
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-25 14:40
文章分类

全部博文(1450)

文章存档

2017年(5)

2014年(2)

2013年(3)

2012年(35)

2011年(39)

2010年(88)

2009年(395)

2008年(382)

2007年(241)

2006年(246)

2005年(14)

分类: LINUX

2010-10-26 19:12:23

Q: 据说对这个atomic_t类型的操作都是原子的.原因是在对这种类型的操作之前都有lock语句.想问下程序在看到atomic_t类型时,是如何得知就要对它实现原子操作.

A:就是因为程序中是有lock,
对于atomic_t 的操作, 因为它是一个struct,不能直接形如
atomic_t i;
i ++;

这种操作,必须用为它准备的atomic_add等系列
看atomic_add 的定义
static __inline__ void atomic_add(int i, atomic_t *v)
{
    __asm__ __volatile__(
        ATOMIC_SMP_LOCK "addl %1,%0"
        :"=m" (v->counter)
        :"ir" (i), "m" (v->counter));
}

再看ATOMIC_SMP_LOCK
#define ATOMIC_SMP_LOCK "lock ; "
阅读(1610) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-10-27 17:44:38

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com

chinaunix网友2010-10-27 17:44:38

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com