3. 自旋锁的API
spin_lock_init(x)
该宏用于初始化自旋锁x。自旋锁在实际使用之前必须进行初始化。该宏用于动态初始化。
DEFINE_SPINLOCK(x)
该宏声明一个自旋锁x 并初始化它。该宏首次在2.6.11 中定义,在之前的内核中不存在。
SPIN_LOCK_UNLOCKED
该宏用于静态初始化自旋锁。
DEFINE_SPINLOCK(x) 相当于spinlock_t x=SPIN_LOCK_UNLOCKED spin_is_locked(x)
该宏用于判断自旋锁x是否已被某个执行单元持有(即被锁定)。如果是,则返回true,否则返回false。
自旋解锁等待(x)
该宏用于等待自旋锁x 不再被任何执行单元持有。如果没有执行单元持有自旋锁,则宏立即返回,否则将在那里循环,直到自旋锁被持有者释放。
spin_trylock(锁)
该宏尽力获得自旋锁。如果能够立即获得锁,则获得锁并返回true。否则无法立即获得锁,立即返回false。它不会旋转等待锁被释放。
自旋锁(锁)
该宏用于获取自旋锁。如果能够立即获得锁,则立即返回。否则,它会在那里自旋,直到自旋锁的持有者被释放,此时它获得锁并返回。简而言之,只有获得锁才返回。
spin_lock_irqsave(锁,标志)
该宏获取自旋锁,同时将标志寄存器的值保存到变量flags中并禁用本地中断。
spin_lock_irq(锁)
该宏与spin_lock_irqsave类似,只不过该宏不保存标志寄存器的值。
spin_lock_bh(锁)
该宏在获取自旋锁时使本地软中断无效。
自旋解锁(锁定)
该宏释放自旋锁,与spin_trylock 或spin_lock 配合使用。如果spin_trylock返回false,则表明没有获取自旋锁,因此不需要使用spin_unlock释放。
spin_unlock_irqrestore(锁定,标志)
在释放自旋锁的同时,该宏还将标志寄存器的值恢复为变量flags中保存的值。它与spin_lock_irqsave 配对。
spin_unlock_irq(锁定)
该宏释放自旋锁并启用本地中断。它与spin_lock_irq 结合应用。
spin_unlock_bh(锁定)
该宏释放自旋锁并启用本地软中断。它与spin_lock_bh 配对。
spin_trylock_irqsave(锁,标志)
如果该宏获取了自旋锁,它还会将标志寄存器的值保存到变量flags中并禁用本地中断。如果没有获取锁,则不会执行任何操作。
所以如果能立即获得锁,就相当于spin_lock_irqsave,如果不能获得锁,就相当于spin_trylock。如果该宏获得了自旋锁,则需要使用spin_unlock_irqrestore 来释放它。
spin_trylock_irq(锁)
该宏与spin_trylock_irqsave 类似,只不过该宏不保存标志寄存器。如果该宏获得了自旋锁,则需要使用spin_unlock_irq 来释放它。
spin_trylock_bh(锁)
如果该宏获取自旋锁,它也会使本地软中断无效。如果它无法获得锁,那么它什么也不做。因此,如果获得锁,则相当于spin_lock_bh,如果没有获得锁,则相当于spin_trylock。如果该宏获得了自旋锁,则需要使用spin_unlock_bh 来释放它。
文章分享结束,高效同步机制:深入解析自旋锁和的答案你都知道了吗?欢迎再次光临本站哦!
【高效同步机制:深入解析自旋锁】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
自旋锁真厉害啊!复杂的操作也能变得简单化
有8位网友表示赞同!
我对自旋锁的概念还挺感兴趣,想了解更多关于它的应用场景
有20位网友表示赞同!
自旋锁在数据库设计中扮演着重要的角色吧?
有20位网友表示赞同!
感觉自旋锁比互斥锁更灵活一点
有7位网友表示赞同!
自旋锁这种机制很巧妙,能提高程序的执行效率
有13位网友表示赞同!
想问一下,自旋锁有什么缺点吗?
有14位网友表示赞同!
在多线程环境下使用自旋锁比较合适吗?
有11位网友表示赞同!
看到这个词我还以为是某种物理现象呢!
有7位网友表示赞同!
学习计算机科学的人应该了解自旋锁吧?
有14位网友表示赞同!
自旋锁的实现原理是什么呢?
有7位网友表示赞同!
这个概念是不是比较难理解啊?
有10位网友表示赞同!
有没有可以用一句话总结自旋锁作用的?
有8位网友表示赞同!
下次编程的时候试试用自旋锁看看效果怎么样
有16位网友表示赞同!
自旋锁在人工智能领域有什么应用吗?
有16位网友表示赞同!
学习了自旋锁后,可以让我理解更高层的并发控制机制了?
有10位网友表示赞同!
自旋锁的性能相比互斥锁怎么样?
有9位网友表示赞同!
我想找一些关于自旋锁的学习资料,你们推荐哪些?
有11位网友表示赞同!
自旋锁是不是在所有编程语言中都能用到的?
有9位网友表示赞同!
感觉这个概念很有深度!
有19位网友表示赞同!