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/futex和http://en.wikipedia.org/wiki/Futex