linux - spin_lock 和 raw_spin_lock() 有什么区别?

标签 linux linux-kernel synchronization locking

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/

相关文章:

java - Spring 锁定域对象的最佳实践?

java - HashMap 缓存中的同步

linux-kernel - 用于暂停/恢复的 GPIO?

linux - 为什么多处理器系统需要禁用中断

python - 在 Linux 上安装 OPC/UA 客户端

php - 如何在单个 shell 行中执行多个 PHP 文件?

linux - 如何反转 shell 字符串中的单词列表?

linux - 如何检查 Linux 符号链接(symbolic link)是否正在使用? (删除未使用的符号链接(symbolic link))

Android进程内存映射

Linux 内核 Rootkit 示例