我正在阅读此链接以了解futex
Linux。这是我不明白的事情。
为了获取锁,可以使用原子测试和设置指令(例如 cmpxchg())测试 0 并设置为 1。在这种情况下,锁定线程获取锁而不涉及内核(以及内核不知道这个 futex 存在)。当下一个线程尝试获取锁时,零测试将失败,需要内核参与。
我不太明白为什么“在不涉及内核的情况下获取锁”。
我一直认为原子指令,例如test-and-set
,总是涉及内核。
那么为什么第一次获取锁不会涉及内核呢?更具体地说,原子指令必须或可能涉及内核?