有时候,就是想窥视一下不知道的东东,因为好奇!
分类: LINUX
2011-02-14 22:31:25
读写自旋锁
1.读写自旋锁
对链表更新和检索的时候,锁的用途可以明确的分为读取和写入。写操作必须要求并发保护,但读操作的并发是安全的。只要没有内核控制路径对数据结构进行修改,就可以允许多个内核控制路径同时读取同一个数据结构。反之,如果要对数据结构进行修改,那么它必须首先获取锁,独占这个资源。
分开处理读取和写入锁可以提高锁的效率。
读写锁机制更照顾读者。当读锁被持有时,写者必须等待,直到所有读者释放锁,而其它读者却可以继续获取锁
2.linux内核中的读写自旋锁
初始化
rwlock_t my_rwlock = RW_LOCK_UNLOCKED
rwlock_init(&my_rwlock)
加锁
read_lock()
read_lock_irq()
read_lock_irqsave()
read_lock_bh()
write_lock()
write_lock_irq()
write_lock_irqsave()
write_lock_bh()
解锁
read_unlock()
read_unlock_irq()
read_unlock_irqsave()
read_unlock_bh()
write_unlock()
write_unlock_irq()
write_unlock_irqsave()
write_unlock_bh()