标签: linux linux-kernel mutex semantics smp
在互斥锁的内核实现中,只有当它是SMP构建时,线程所有者字段才存在。我可以理解,在良好和干净的代码下,线程将仅在获取成功时调用release,因此我们可以通过不跟踪线程来节省一些缓存和cpu周期。但那么为什么SMP需要呢?是因为在SMP中,互斥是混合和旋转,而线程所有者是在另一个cpu上并且需要这个字段作为参考,还是有更多的原因呢?
答案 0 :(得分:1)
老实说,我现在还不记得linux内核互斥锁实现,但我发现至少有三个理由将mutex所有者直接存储在数据结构中: