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