如何实现pthread_mutex_lock

avd*_*avd 40 unix linux synchronization mutex pthreads

我很想知道如何在Unix中实现与线程之间的同步相关的函数.例如,当我打电话时会发生什么pthread_mutex_lock?有没有使用指针?对源代码的引用确实会有所帮助.

gby*_*gby 56

它既复杂又不同于Unix变种.

例如,在Linux中,使用称为Futex(Short for Fast Userspace Mutex)的系统.

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

如果操作的结果表明锁没有争用,则对pthread_mutex_lock的调用在没有上下文切换到内核的情况下返回,因此获取互斥锁的操作可能非常快.

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

有许多细节,特别是对于可靠和/或优先级的inhertience互斥体,但这是它的本质.

有关详细信息,请参阅:http://linux.die.net/man/2/futexhttp://en.wikipedia.org/wiki/Futex

  • 什么用于内核辅助等待和唤醒操作[在`futex`之前](/sf/ask/3203506491/)? (3认同)

kar*_*lip 6

在Linux上,pthreads可以通过libc获得.通常是glibc,源代码在这里可用!

检查此参考.