标签:
如果你用Linux perf tool的top命令做热点纠察时,你会发现,前10名嫌疑犯里面肯定有好几个都是锁!设计好的数据结构和代码流程是一方面,但是这个层次不够抽象,更好的方式就是设计一种更加优化的锁。读写锁这种不对称的锁应对读者多写者少的情景是一种优化的锁,它对读者的优待就是无需等待,只要没有写者就可以直接读,否则才等待。而对于写者,它需要等待所有读者的完成。这种读写的实现可以依赖于另一种叫做自旋锁的机制实现,我的一个实现如下所示:
typedef struct { spinlock_t *spinlock; atomic_t readers; }rwlock_t; static inline void rdlock(rwlock_t *lock) { spinlock_t *lck = lock->spinlock; if (likely(!lock->readers++)) spin_lock(lck); } static inline void rdunlock(rwlock_t *lock) { spinlock_t *lck = lock->spinlock; if (likely(!--lock->readers)) spin_unlock(lck); } static inline void wrlock(rwlock_t *lock) { spin_lock(lock->spinlock); } static inline void wrunlock(rwlock_t *lock) { spin_unlock(lock->spinlock); }
版权声明:本文为博主原创文章,未经博主允许不得转载。
Linux内核RCU(Read Copy Update)锁简析-前传
标签:
原文地址:http://blog.csdn.net/dog250/article/details/46854437