linux内核同步机制(1)------自旋锁

一、简介与使用

  自旋锁适用于用于保护短的代码段,通过spinlock_t数据结构实现,常用接口如下:

  1) spin_lock 和 spin_unlock
2) spin_lock_irqsave 和 spin_unlock_restore: 获取锁的同时还会关中断
3)spin_lock_bh/ spin_unlock_bh : 关软中断
4) spin_trylock 和 spin_trylock_bh 尝试获取锁,但不会阻塞
通常自旋锁使用 SPIN_LOCK_UNLOCKED进行初始化。
二、注意事项
1) 自旋锁保护的临界区不宜过长(比如加入打印日志代码)或者调用会睡眠的函数
2) 单CPU系统中,由于会有内核抢占的出现,spin_lock等价于preempt_disable

  
  

posted @ 2021-06-12 23:04  zq216991  阅读(107)  评论(0编辑  收藏  举报