vin*_*rak 8 linux linux-kernel spinlock
在我的Ubuntu机器上,正在运行的默认内核映像是为smp(CONFIG_SMP=y)构建的.但这台机器只有1个CPU.
在单处理器内核上,与smp内核不同,spin_lock/unlock是空函数.那么这个设置的表现spin_lock()和spin_unlock()行为如何呢?
这种特定于smp的代码是否会对性能产生影响?
是的(也可能不是)。
是:A. 自旋锁定/解锁将运行锁定和解锁的实际代码,因为当您编译它时,编译器不知道您是否要在具有一个或多个CPU的机器上运行它。B. 尽管您有一个 CPU,但如果您使用线程,您可能仍然想使用它。
可能不会:我猜你问这个问题是因为你没有将线程用于需要锁定的部分,而且你只有一个 CPU。在这种情况下,自旋锁永远不会进入自旋状态。所以性能开销可以忽略不计。