顺序锁与读/写自旋锁类似,只是现在写的优先级高于读操作。事实是:即使載读者正在读的时候也允许写操作的运行。这种策略的好处是写操作不会等待,除非另一个写操作正在进行。其缺点就是读操作不得不多进行几次直到获得有效的副本。更多信息请自行查阅。
1、定义顺序锁
seqlock_t sq_lock;
seqlock_init(&sq_lock);
2、读数据
int value = 0;
unsigned int seq;
do {
seq = read_seqbegin(&sq_lock);
value = data;
} while (read_seqretry(&sq_lock, seq));
return value;
3、写数据
write_seqlock(&sq_lock);
data = 1;
write_sequnlock(&sq_lock);