linux 内核中每个自旋锁都有原始变体,我想知道它的用法?例如:
raw_spin_lock()
、raw_spin_lock_irqsave()
等
最佳答案
spin_lock*
函数的作用与 raw_spin_lock*
相同,另外,当启用锁定调试 (CONFIG_DEBUG_LOCK_ALLOC) 时,对锁定操作执行一些额外的运行时检查,例如检查僵局。这些检查由 lockdep
子系统执行。
通常,只要有可能,就应该使用spin_lock*
函数。
只有在锁定策略非常棘手的极少数情况下,当 lockdep
会产生错误警告时,才可以使用 raw_spin_lock*
函数。
此外,raw_*
函数可以比普通函数更受欢迎,以减少内存使用或性能原因。但它应该是实际的时间/空间测量值,反射(reflect)了使用这些优化带来的重大胜利。
关于linux - spin_lock 和 raw_spin_lock() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33483500/