原子指令是否涉及内核

问题描述 投票:1回答:1

我正在阅读此link,以了解Linux的futex。这是我不了解的内容。

为了获得锁,使用原子测试和设置指令(例如如cmpxchg())可用于测试0并将其设置为1。在这种情况下,锁定线程在不涉及内核的情况下获取了锁(并且内核不知道该futex存在)。当下线程尝试获取锁,零测试将失败,并且内核需要参与。

我不太明白为什么“在不涉及内核的情况下获得锁”。

我一直认为原子指令,例如test-and-set,总是涉及内核。

所以为什么第一次获取锁不会涉及内核?更具体地说,原子指令必须或可能涉及内核?

linux multithreading locking atomic test-and-set
1个回答
0
投票
Futexe提供了一种有效的方法来执行锁定和解锁操作,而不会将内核包含在快速路径中。但是,如果需要使进程进入睡眠状态(等待获取锁)或唤醒(因为它无法获取锁,但现在可以唤醒),则必须包含内核来执行调度操作。
© www.soinside.com 2019 - 2024. All rights reserved.