gpt4 book ai didi

linux - pthread_mutex_lock 是如何实现的

转载 作者:IT老高 更新时间:2023-10-28 12:37:22 33 4
gpt4 key购买 nike

我只是想知道与线程之间的同步相关的功能是如何在 Unix 中实现的。例如,当我调用 pthread_mutex_lock 时会发生什么?有没有使用中的指针?对源代码的引用会很有帮助。

最佳答案

它既复杂又不同于 Unix 到 Unix 变体。

例如,在 Linux 中,使用了一个名为 Futex(Fast Userspace Mutex 的缩写)的系统。

在该系统中,对用户空间中的互斥变量执行原子增量和测试操作。

如果操作的结果表明没有对锁的争用,那么对 pthread_mutex_lock 的调用就会返回而无需上下文切换到内核中,因此获取互斥锁的操作可以非常快。

只有在检测到争用时,才会发生系统调用(称为 futex)和进入内核的上下文切换,使调用进程进入休眠状态,直到互斥锁被释放。

还有更多细节,尤其是对于可靠和/或优先级继承互斥锁,但这是它的精髓。

更多详情见:http://linux.die.net/man/2/futexhttp://en.wikipedia.org/wiki/Futex

关于linux - pthread_mutex_lock 是如何实现的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5095781/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com