Chinaunix首页 | 论坛 | 博客
  • 博客访问: 528744
  • 博文数量: 237
  • 博客积分: 2175
  • 博客等级: 大尉
  • 技术积分: 2563
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-05 22:02
个人简介

目前在一家公司担任软件总监,主要涉及智能手机,笔记本电脑的开发

文章分类

全部博文(237)

文章存档

2024年(18)

2023年(68)

2022年(13)

2021年(7)

2020年(11)

2019年(3)

2018年(10)

2017年(8)

2012年(7)

2011年(4)

2010年(32)

2009年(41)

2008年(6)

2007年(9)

分类: LINUX

2010-09-16 12:12:53

 
 
1 SPINLOCK
  一开始总是弄不明白,对于单一的CPU ,不可抢占内核,SPINLOCK什么都没做。
  原因是: 对于SPINLOCK , 它总是初始化为 SPIN_LOCK_UNLOCKED ,没有SPIN_LOCK_LOCKED 这个宏,
         假如有process A , process B
       Process A :
                spin_lock
                do something
                spin_unlock
         不论process A 或者process B 谁先得到 lock , 他们都可以执行下去,对于不可抢占的单CPU,
    假如process A 先得到lock ,它必须执行完了后,才可以切换到process B . 也就是process A 会执行完spin_lock 在do something时候不会中断,然后执行spin_unlock , 所以得到锁的进程必然会释放锁后才切换,因此,SPINLOCK其实什么都可以不做。因为在do something的时候不会被打扰的。
 
 
2 seqlock 与 rwlock
 rwlock :
这种锁的特点是可以有多个读者同时加锁,并且读者优先于写者,也就是说只要有一个读者在临界区,那么写者就不能进去访问。
 
而seqlock :
 对于写者加锁, 写者优先,读者需要检验是否和写者有冲突。如果冲突,则重来。
 
  2 semaphore  completion difference ?
阅读(1918) | 评论(1) | 转发(0) |
0

上一篇:ubuntu 内核升级

下一篇:android 学习点滴

给主人留下些什么吧!~~

chinaunix网友2010-09-16 16:45:08

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