使用自旋锁锁定在不同线程中同时使用的变量?
Using spin lock to lock a variable being concurrently used in a different thread?
假设您调用 spin_lock(&key) 并且键同时在不同的线程中对其执行某种类型的操作。另一个线程是 paused/interrupted 吗?
另一个正在更改或使用密钥的线程会发生什么情况?例如线程正在调用 copy_to_user(key)、copy_from_user(key) 或 kmallocing/kfreeing key?
不具体了解 Linux kernel spin_lock()
, but in practically all programming environments, mutex locking is advisory。这意味着,锁定一个锁永远不会阻止 anything 除了,它会阻止其他线程同时锁定同一个锁。如果您想使用锁来保护某些变量或数据结构,那么确保系统中任何地方的代码都不会访问数据完全是程序员的责任,除非锁被锁定。
假设您调用 spin_lock(&key) 并且键同时在不同的线程中对其执行某种类型的操作。另一个线程是 paused/interrupted 吗?
另一个正在更改或使用密钥的线程会发生什么情况?例如线程正在调用 copy_to_user(key)、copy_from_user(key) 或 kmallocing/kfreeing key?
不具体了解 Linux kernel spin_lock()
, but in practically all programming environments, mutex locking is advisory。这意味着,锁定一个锁永远不会阻止 anything 除了,它会阻止其他线程同时锁定同一个锁。如果您想使用锁来保护某些变量或数据结构,那么确保系统中任何地方的代码都不会访问数据完全是程序员的责任,除非锁被锁定。