加载中...

futex(fast userspace mutex)是 Linux 的底层同步原语:在无竞争时,加锁解锁仅通过用户态原子操作完成,不进入内核;只有发生竞争需要等待或唤醒时,才调用 futex 系统调用让内核挂起或唤醒线程。
futex 以一个用户态整数地址为标识。线程先用原子指令(如 CAS)尝试获取锁,失败后调用 FUTEX_WAIT 在该地址对应的内核等待队列上睡眠;持有者释放锁时若发现有等待者,再调用 FUTEX_WAKE 唤醒。
glibc 的 pthread 互斥锁、条件变量、信号量以及多数语言运行时(如 Java、Go、Rust 标准库)的锁,底层都构建在 futex 之上。
futex 把常见的无竞争路径成本降到几条原子指令,是现代 Linux 高性能并发编程的基石。其接口语义复杂,一般由库而非应用直接使用。

登录 后参与讨论
暂无讨论,来发表第一条评论吧