00:00
那么怎么证明呢?对啊,我们可以呢,怎么样,咱可以嗯,去解读一下它的底层原理啊,那么顺便的话呢,来看它怎么实现可重入的。那么又怎么实现独占排他的?那我们这个ise MU底层原理啊,咱们去看一看啊。好,那么此时呢,我们再以第bug重新启动啊,然后呢,我们在这个位置打个关闭,然后在获取锁的地方我们再打个关闭。然后呢,在我们的这个release方法上面,我们也打断列,那么以及呢,这个呃,Que方法。啊,Sub的方法我们也打断点方法也打断点啊啊打断断点之后呢,我们来去发送个请求,试一下点击啊刷新。好,来看它已经进入我们端点了,那么此时呢,就会进入我们这个interrise。好,那我们来去进去看一下干了什么事情,好,F7啊,进去。那么它这个的话呢,掉了一个重载的构造法。
01:00
然后呢,给了我们一个标准的锁,呃,锁内部驱动啊,这么一个玩意儿。好,那么这个对象的话呢,呃,咱现在的话不用去关心他。好,那我们来直接去,你这是那个Q的客户端嘛,然后这是我们指定的一个路径啊,就是哪个路径呢,就是这个路径啊。好,那么然后呢,我们来继续往下看啊,F7进去又进入了一个啊,进入这里面去了啊,这个呢是。呃,是这个地方,这个地方这个构造方法进去了啊啊,那我们要进的是这个方法啊,同载的离的方法。好,我们来去F7再进去。啊,这好像还是那个standard look lock,然后是drive啊,这个东西啊,还是这个东西。那我们呢,呃,再进去,哎,终于进入到这个重载的这个不等法了。啊,那么然后呢,它又掉了一个重载的构造用法。你看这个地方啊,除了我们这个克林特啊,Pass啊,Pass就是我们指定的一个pass啊。
02:03
那多了一看呢,Lock name,这个lock name呀,它是一个常量啊,就是一个lock下划线,它将来就会在我们这个路径啊,它是个呢,是个根路径,它作为根根路径啊,Root pass类使用的,作为root pass使用的。在这个road pass下面可以创建一个,创建一个lockdown开头的临时序列化节点。看他这么去搞的啊,啊是这个路径啊,加上这个路径,然后生成一个节点。那当然当然的话呢,不止是这么简单啊,那后续呢,我们可以看到。那么还有一个是max,呃,Max Le啊这样的一个玩意儿啊,它传了一个一常量定去的啊,哎,注意这个东西,这个东西咱后续呢,会经常碰到啊,那么什么意思呢?就是最大主约的意思啊,主约啊,主约是一。好,那么后面这个变量呢,咱就不用管它了啊。好,一定要注意,这里呢是lock name是lock GU这个常量,然后最大主约呢是一啊,那么这个pass呢,就是我们的那个指定的那个锁名称啊。
03:07
啊,它会作为根目录啊根节点那么来使用。好,那么然后呢,我们再进去看一下啊,直接啊F7进去啊,这才是最终的一个导方法。啊,各导方法在这各造方法里面,就是就这构造方法啊。那么首先呢,他会去验证我们这个路径。啊,验证的路径怎么验证呢?啊,咱可以进入这个这个方法去看一看啊F7进去。那么其实就是判断我们这个路径是不是为空,哎,长度呢是不是为零,然后呢,看看你的第一位啊,是不是这个杠,如果你第一位不是杠的话,它会抛出一个异常。那么然后再看你的这个长度是不是等于一,如果你是杠,并且是等于一的情况下,直接可以返回了。那如果你不是一的话呢,他开始去啊,又开始做各种判断,看你最后一位是不是杠,那你最后一位呢,不能是杠啊,不能是杠,哎,如果我们在这个地方再加个杠在最后面的话,它也会抛出异常啊。
04:04
啊,最后一位不能是杠,因为这个length减一下标是S减一的,就最后一位嘛,不能是杠,如果是杠的话也会跑出一啊。然后呢,还会去验证一下啊,有没有这些啊,什么相对路径什么之类的啊。啊,反正做各种验证,那这样的话呢,咱们就不允许深究了啊,OK,那么你只要正常的去写这个所所名称啊,写这个pass路径啊,那它是没啥问题的啊。OK,那么我们继续回到咱们这个啊,这个外面这一层去啊,这个里面去呢,可以到下一行了。那么验证完这个路径之后呀,你就可以作为作为base pass的一个使用了。啊,作为那个根基点也使用了这个带帕,就是咱们根基点啊好,那我们直接呢,走呃,出去到下个端点到这个位置。那么这个位置呢,就是利用了一个呃,Local啊这个玩意儿。那么后续啊,咱们的加速和解锁呀,啊,基本上都交给这个类来去处理的,那么在我们这个inter process MU里面的有个非常重要的一个东西,就这个了。
05:12
但它里面有我们加锁和解锁的啊,啊所有操作啊,啊,基本上核心操作都在这个里面。好,这里呢,就在初始化的注意下。那么初示完这个冰箱的时候呢,我们看他干什么事情啊,直接在FF7进去,然后再走再进去,大家进入这个各挡法了,那这各方法里面呢,先去初始了这个驱动。哎,怎么链跳呢啊,它这呢初始了驱动,然后呢,又把我们这个锁名称啊,让它复制给这个啊,复制给这个lock里面的这个lock name这个属性,然后么组约的话呢,也复制给它了,所以这个组约呢是等于一啊,我们一定得要记住最大组约是。啊,后面呢,有大作用啊,那么然后呢,我们还有这个呃,可因特,那他又用了这样的一个可因特。
06:01
啊,可以监听的这样的一个framework领导。好,那我们这的话呢,啊,先不管它啊,其实呢,咱后续啊,证明这个东西呢,啊,看的不是很多啊,啊基本上看不到。然后这个best pass,等于你又通过这个pass us来验证了我们这样的一个pass,那么验证好之后呢,又复制给当前这个类里面的this pass。那么之前的话呢,我们已经把这个pass验证过之后呢,复制给这个类里面的best pass了,哎,这个啊local Internet里面也有一个best pass。啊,反复去验证了。OK 72的这里呢,其实没啥必要啊,重复研究。啊,所以它这个性能的话呢,呃,其实没有我们那个性能高,这个底层代码呢,写的也是也是一般啊,当然我们这的话呢,就不做过多评价啊,毕竟呢是大公司开源的对吧?啊OK。那我们这样来看啊,下面这个地方呢,就ma make pass,那它会把我们这个,呃,指定这个路径啊,加上这个lock name来生成一个最终的这个pass。
07:06
啊,最终pass,那最终pass呢,就是咱们这个路径加这个路径啊。OK,这个make pass来我们来进去看一下啊,先走走走走这里来,那么这个best pass呢,就是我们指定那个路径,然后呢,啊再去生成,再把咱们这个指定的路径加上lockname,生成一个pass,就能复制给当前这个对象。好,那我们接着进去看他做了什么事情啊。那其实的话呢,就是啊,做了一个字符串拼接,它拗了一个什么string string build这样一个玩意。啊,然后呢,嗯,指定一个长度嘛,它是获取我们parent这个长度,就是我们指定的一个路径,加上这个lock name那个路径,那个路径的长度啊,然后再加上一个二,那它多指定的一位。OK,那么然后呢,再去,呃,拼接字五块啊,拼接到这样的一个pass里面去,最终拼接的这个pass等于啥呢?也就等于cur locks lock杠来讲一个路径。
08:05
啊,把这个路径呢,给它拼接出来,那最终呢,就把这个东西呢,复制给什么,复制给lock Internet里面的这个pass听了啊。好,是咱们这样的一个,呃,构造方法我们就全部都看完了,但主要是看两个构造方法。
我来说两句