00:00
好,同学们讲到这儿。基本上啊,AKS当中每一个节点该怎么入队,该怎么形成这样一个AKS队列,算是给大家呢介绍清楚,暂告一个段落,那么这个时候大家再来看这张图,现在是不是觉得很自然,像大自然一样自然,理所应当了,OK,好嘞,那接下来我们可以呢?看一眼,尝试抢所抢不到的话进对排列,然后坐稳队列挂起,静静的等待着前面的资源释放。那么再次强调。现在B跟C还在这个方法里面呢啊,人家被挂起没完呢,所以接下来我们呢,按照我们的流程,那么继续往下走,是不是要看看安洛克方法,因为目前。ABC各归其位。那接下来你A总要办完业务,按落释放资源以后,我就跟B和C才能上位去抢夺资源,然后正常的完成我们B跟C的业务吧,所以说现在我们就来看看我们的安洛克方法,这个呢三步由他。
01:15
来,牵一发而动全身,别忘了最后再强调一次,啰嗦一点,在这块没结束呢,好,来看看。他怎么动的呢?比如现在A忙了半天差不多了嘛,嗯,隔到这儿20分钟左右是吧,他也办完业务,A已经要结束了,然后呢,他呢按洛克。离开窗口,释放资源供BC其他现场来抢夺,所以它呢,三部曲。Think release示范一,然后呢,尝试示范,然后unpa,注意我这是不是PA unpa是不是它叫唤醒又重新继续啊,那么这个success是后续节点的意思,OK,好了,那么三步过来吧,现在按照我们的业务A节点办完以后unlo克。
02:07
按lock以后lock lock方法。Release。一。进来来吧,下面这个参数是1TRY release进来哦,吼,又是aqs负类的方法,所以说在这点开,我们这个C是在re lock里面的。过来参数是一,那么接下来终于来到了我们示范所的流程,那么大家请看好。Get sta。那么现在A线程要按look准备走了。Get,西塔几红色的一说明还在占用着,那么当然我慢慢的要释放,那么传过来的是一一减一几,这个C现在是不是就是零啊?然后呢,当前线程不等于持有所的这个线程,那么一般不会出现这个异常,对吧?现在就是A要准备安洛克,那么现在C是什么?零一减一等于零,那么这个free是force。
03:04
相当于说目前初始值是个布尔变量走。C等不等于零,当然等于了,一减一等于零进来,那么就把这个从false改为了什么,然后呢,That exclusive owner thread是,那说明什么?A要出去了,然后再把它设置为C等于零,相当于说把这个窗口的这个thread a顾客啊lo克解锁了以后。哥们儿,我这儿就是,那说明窗口已经办完业务资源又已经释放了,那么get set这个C就从红色的一占用就变成了绿色的零空闲,OK,好的,那么各位同学,这个就是我们全部的流程和相关的讲解,那么这个释放了以后。Return。Free,现在这个是多少,是OK吗?
04:02
好了,那么这个时候是错,那么隔到这儿。如果是处的时候进不进来,当然要进来了,那么来吧,No h2等于head,就是头节点那么大,大家请看现在注意,刚才强调过牵一发而动全身。这个A离开了以后,那是不是又要开始BC节点要开始了,抢了,OK,那么下面H不等于钠。头节点现在指着我们的这个虚拟节点,占位节点当然不等于烂了,这个是错,那么头节点的位塔塔不等于零,那么它呢,负一,负一当然不等于零了,进来,所以说是叫安帕克S,那么H2是我们的头节点。过到这,那么下面头节点是漏的,那么下面就看一下头节点的位塔塔SWS等于多少,是不是等于负一,负一小于零吗?错,当然进来了,那么比较并设置为的。
05:02
干嘛重新设为零,好,那么相当于说这个节点。根据刚才我们所传的啊,那么请大家注意传的是谁H头节点,所以说过来,那么就把头节点的WS啊为这块态值啊,那么改为多少零,好的,那么同学们请大家看这跟着来啊,我们就改为零,然后完了以后,那么现在头节点的下一个值是S啊,头节点的下一个值是谁?是不是我们的节点BOK,那么相当于说这个S啊就是BB等等,那吗?现在这个B节点当然不等于烂了,所以说这段。怎么着不进来直接过来B,那么这个啊,Node现在头节点的占位节点是的S就是这个BS不等于呢,Yes true,请看look put点安pas.thread那么相当于说就是啊节点B角唤醒,然后让你怎么着。安park,好了,相当于说A走了,按照排队的优先级,B你可以上去喽。好了,那么回到我们刚才的程序。
06:09
相关的说明,那么我们强调过没完了,搁到这儿,现在。根据刚才我们所讲解,那么这个B是不是一直在这儿挂起呢?中学有人用这个安帕对我进行了唤醒,对吧,所以说我这个B那么过来这儿。根据刚才大家所看到的,那么IPA被唤醒了,搁到这儿现成点interrupted,那么好,这个方法返回什么?由于我们目前是正常流程,没有什么意外或者被打断,所以说这个返回force,好嘞,那么O了。返回false了,以后别别忘了我们现在啊,还没结束呢,听懂也就是说我们还在我们的这一大圈这个方法里面来吧,那么现在。来到这儿。咱们。艾德维塔搁到这儿来喽,在这块我们刚才已经看到了。
07:04
在这块B被唤醒,这个返回false,那么好,各位亲。继续来在这块返回false了,那么是不是不再继续往前走对吧,那么退出来不进这个if,别忘了这是一个大的循环,OK,所以搁到这儿,这个node就是我们现在的节点什么。那么好,B节点被唤醒了,B节点的前一个节点就是这个PP等等是害的嘛,当然等于了,现在这个P就是我们的虚拟节点,这个占位节点这块是错好。我来这看,叫TRY。Acquire干嘛呢?他要尝试着去抢占所哎,这个时候可能有部分同学会觉得奇怪,那么按照我们的队列里面,他还干嘛要去尝试抢占,100%就应该是这个B了吗?有什么好说的。你别忘了前面。我们这儿讲了那么多,每一个知识点它都是有关联的,那么来同学们,我们是不是说过这么一个源码说明?
08:09
好,嗯,在这儿啊。来。我找一下啊,请稍等。我们原来是不是说过一个案例叫这个,诶在哪去了啊,我找一下。在这呢啊,同学们看一下这段话。还记得我们说过一个不讲武德,差队夺锁的这么一个理论。公平还是非公平,那么再次强调啊。回到源码这儿,绝对不是你所说的啊,这块排着队,下一个肯定是B了,干嘛还有一个踹这么一个动作,理由是这样的,你进到AKS队列里面,这个没问题,肯定是fio先进先出,这是在队列里面,但是别忘了,我们现在用的是非公平锁,可能会出现。不讲武德的情况。也就是说。现在队列的第一个排队线程苏醒了之后,不一定就是排头的这个B,这个线程获得锁,它还是要参与竞争的,所以说我们这儿有个TRY和快,有些可能后来的县程不讲武德差队夺所意思这样啊,比如说在这个队列里面。
09:15
我们先进先出没问题,但是高并发多线程由于是非公平锁,有可能这个B正准备要强的话,二来了个X啊。那不好意思啊,你这个B乖乖的还得进来给我排队候着,听懂OK,好,这是一种极端的情况啊,但是确实会出现,但这个出现的概率。可能不高默认情况下啊,还是按照我们这样的正常流程来给大家进行介绍,那么来。现在这个P就是had,那么相当于说就是它有的没问题,那么现在try acquire,那么搁到这,我们的B过来了,那么搁到这儿。这是一,那么当前线程是谁就是B对吧?那么get,那么现在是多少?现在我们的值是几啊,是不是绿色的零,资源窗口是空闲的对不对,那么所以说是零的话,过了这儿,那么。
10:07
跟以前一样,Cns啊,希望值是零,窗口空闲了,把这个acquire从零变成一,设置当前的独占线程是谁?就是我们的current b。然后return true OK,所以说在这块。又变成我们这儿。设置从零到一,绿色的零,空弦变成了红色的一,当前线程已经是B上位了,OK,好,那么这又从绿色变成一,那么这一块,那么可以把它理解为就是我们的什么。顾客B了,OK,好,那么在这块同学们请看返回一个什么return to o了,那么搞到这,我们呢,挨个挨个的再往回找。来吧。那么好。在这块直接启动好了,那么返回处了以后,那么同学们搞到这儿。
11:09
好,那么这个方法大家请看,我们在这儿是不是就返回错,相当于说B就去银行窗口上办理业务了,那么这个是错,这个也是错进来,接下来请大家看set head等于这个node,现在这个node是谁那么注意。相当于是现在这个node就是我们的节点BOK,好,过来请看,那么就把had等于这个node。那么搁到这儿,我们呢,执行它。头节点就等于我们的节点BOK,好。No thread等于那正常no就相当于一把椅子,这个人已经去窗口办理业务,他已经从后客区到业务区了,那么所以说在这块我们呢。Thread。
12:00
等于,那没问题,全部按照原码走,然后再把这个位置,那我的B的前置节点等于,那那么这个P等于捺。OK,没了,好了,那么接下来同学们,我们继续回来。完成这个以后,再把P的next等于那P是谁?P就是现在的是么头节点,那么相当于说这个时候我们的这个P是不是就是之前刚才我们之前我们说过,刚才是B的这个P是谁?就是我们的这个站位节点听懂要把站位节点的next等于那,那么要把占位节点的next等于那。有没有发现这个站位的哨兵节点,就是这个虚拟节点,突然发现没有任何一个引用在指向他了,所以人家后面写了个什么,还要谱GCOK,那么来吧,你们这个fair就从to变成false,我们没有失败听懂。
13:00
Fail吗?失败了吗?Force没有失败,Return interrupt什么force也没有中断,所以说搁到这儿了以后,那么弟兄们相当于说这个慢慢的就离开了,那么有点类似于什么概念,我们这个节点。B。真真真正的顾客已经去这个窗口上干活了,而他是不是又变成了一个新的,类似于之前的。站位节点,哨兵节点啊。OK,好,那么同学们,这个才是一个完整的入队和出队的过程,那么搁到这儿了以后,A彻底退出江湖,这个B也就持有了这个落来办理相关的业务,那么从头到尾而言,那么同学们,我们呢,就完成了我们的解锁和相关,OK,那么啊,洛克方法就给大家介绍到这儿。
我来说两句