标签:
如果你用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