有时候,就是想窥视一下不知道的东东,因为好奇!
分类: LINUX
2011-02-20 23:46:10
顺序锁
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)