Chinaunix首页 | 论坛 | 博客
  • 博客访问: 690772
  • 博文数量: 192
  • 博客积分: 1875
  • 博客等级: 上尉
  • 技术积分: 2177
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-23 23:21
个人简介

有时候,就是想窥视一下不知道的东东,因为好奇!

文章分类

全部博文(192)

文章存档

2024年(8)

2023年(3)

2019年(1)

2018年(1)

2017年(2)

2016年(69)

2015年(53)

2014年(14)

2013年(1)

2012年(5)

2011年(25)

2010年(9)

分类: LINUX

2011-02-20 23:46:10

p { margin-bottom: 0.21cm; } p { margin-bottom: 0.21cm; }

顺序锁

1.顺序锁

顺序锁是对读写锁的一种优化,使用顺序锁时,读操作的控制路径不会被写操作的执行路径阻塞,写操作的执行路径也不需要等待所有读操作执行路径完成操作才去进行写操作。写操作与写操作仍然互斥。

若读操作执行期间,发生写操作,那么读操作必须重新读取数据。


局限:要求被保护的共享数据不含有指针(如果写操作使指针失效,读操作正要访问该指针,就Oops)

2.linux内核中的顺序锁

写操作时

获得自旋锁

write_seqlock(seqlock_t *sl)

write_tryseqlock(seqlock_t *sl)

write_seqlock_irqsave(seqlock_t *sl)

write_seqlock_irq(seqlock_t *sl)

write_seqlock_bh(seqlock_t *sl)

释放自旋锁

write_sequnlock(seqlock_t *sl)

write_sequnlock_irqrestore(seqlock_t *sl)

write_sequnlock_irq(seqlock_t *sl)

write_sequnlock_bh(seqlock_t *sl)

读操作时

读开始

read_seqbegin(const seqlock_t *sl)

read_seqbegin_irqsave(lock, flags)

重读

read_seqretry(const seqlock_t *sl, unsigned iv)

read_seqretry_irqrestore(lock, iv, flags)

阅读(1617) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~