linux驅動中使用順序鎖

yingxian_Fei發表於2016-04-20

     順序鎖與讀/寫自旋鎖類似,只是現在寫的優先順序高於讀操作。事實是:即使載讀者正在讀的時候也允許寫操作的執行。這種策略的好處是寫操作不會等待,除非另一個寫操作正在進行。其缺點就是讀操作不得不多進行幾次直到獲得有效的副本。更多資訊請自行查閱。

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);	


相關文章