Chinaunix

标题: 请问mutex是怎么实现的 [打印本页]

作者: allkillers    时间: 2016-05-06 17:26
标题: 请问mutex是怎么实现的
mutex是无法在用户态实现的,必须依赖于内核态关中断或关抢占的参与才能实现的,那要主动进入内核态,只能是系统调用进入,但并没有看到mutex相关的系统调用。请问mutex是通过什么方式或者说通过什么系统调用实现的?
作者: 我爱你我的菜    时间: 2016-05-06 17:32
可能是使用原子操作实现的,对应汇编exchange类似的原子指令吧
作者: nswcfd    时间: 2016-05-06 18:24
mutex是给内核自己用的吧。。。 跟系统调用有什么关系?

用户态的同步库,要么完全在用户态实现(没有内核参与),要么使用futex、semop。
作者: allkillers    时间: 2016-05-06 20:45
本帖最后由 allkillers 于 2016-05-06 20:48 编辑

我先查查资料先,我发现我们的思路不在一个点上,可能有些东西我还没搞清。


   
作者: Godbach    时间: 2016-05-11 14:59
回复 1# allkillers

现在的实现中,用户态的多数 lock,包括 pthread 的 lock 等,应该都是通过 futex 来实现的。


   
作者: mournjust    时间: 2016-05-20 11:01
android 代码里面是基于futex系统调用实现的。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2