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系统调用实现的。
页: [1]
查看完整版本: 请问mutex是怎么实现的