Linux pthread_mutex_lock是如何实现的
我只是想知道与线程间同步相关的函数是如何在Unix中实现的。例如,当我调用Linux pthread_mutex_lock是如何实现的,linux,unix,synchronization,pthreads,mutex,Linux,Unix,Synchronization,Pthreads,Mutex,我只是想知道与线程间同步相关的函数是如何在Unix中实现的。例如,当我调用pthread\u mutex\u lock时会发生什么?有什么指针在使用吗?参考源代码会很有帮助。它既复杂又不同于Unix变体 例如,在Linux中,使用了一个名为Futex(Fast Userspace Mutex的缩写)的系统 在该系统中,对用户空间中的互斥变量执行原子增量和测试操作 如果操作结果表明锁上没有争用,那么对pthread_mutex_lock的调用将返回,而不会将上下文切换到内核中,因此获取互斥锁的操作
pthread\u mutex\u lock
时会发生什么?有什么指针在使用吗?参考源代码会很有帮助。它既复杂又不同于Unix变体
例如,在Linux中,使用了一个名为Futex(Fast Userspace Mutex的缩写)的系统
在该系统中,对用户空间中的互斥变量执行原子增量和测试操作
如果操作结果表明锁上没有争用,那么对pthread_mutex_lock的调用将返回,而不会将上下文切换到内核中,因此获取互斥锁的操作可能非常快
只有当检测到争用时,才会进行系统调用(称为futex)并在内核中进行上下文切换,从而使调用进程处于休眠状态,直到释放互斥
还有更多的细节,特别是对于可靠和/或优先级固有互斥体,但这是它的本质
有关更多详细信息,请参见:和在Linux上,pthreads可通过libc获得。通常是glibc,源代码是可用的
检查此项。内核辅助的等待和唤醒操作使用了什么?