我试图了解第三点的原因 - 最重要的是必须条件来自以下链接:
https://www.freebsd.org/cgi/man.cgi?locking(9)
巨
Giant是一种特殊的互斥锁,用于保护尚未存在的数据结构 有自己的锁。因为它提供类似于旧的spl(9)的语义 界面,巨人有特色:
Matrix 1
+---+---+---+---+
| 1| 2| 0| 0|
+---+---+---+---+
| 0| 3| 4| 0|
+---+---+---+---+
| 0| 0| 5| 6|
+---+---+---+---+
答案 0 :(得分:1)
John Baldwin在他的BSDcon paper中为此规则提供了更详细的解释:
获取巨人时不允许持有任何锁定。这个 确保始终可以安全地获取其他锁,无论是否 巨人被举行。这反过来允许拥有自己的子系统 在没有巨人被占领的情况下直接调用锁,并被调用 其他需要巨人的子系统。