00:00
接下来呢,我们来去验证一下p processise muex的可重入性好,那我们可以呢,再去写一个test的方法,嗯,咱把它呢,给它拷贝过来,然后呢,放在。这个位置那放完之后呢,把这个方法名我给它改一下,改成ZK样的是S。好,那我们,呃,在这里啊,咱们这个要初始化一个the keep of famous,那么之前呢,是咱们自己写的the,我们它替换成interp processise MU takes这个分母数数。那我们呢,直接把这行代码呢,给它拷贝过来,然后呢,放在这个位置。啊,放好之后呢,我们呃需要通过这个muticx被加锁,那么呃,然后点上方法。好,那么在这个地方呢,我们可以通过meal点上release方法。等于释放所。那么由异常呢,我们就直接啊给它抛出去啊,抛好之后呀,咱们这个方法呢,就随便写一写啊,来测试一下,看看能不能重入。
01:06
啊,然后呢,我们在这个大的方法里面来调一下this.test the sub。好,那么咱们这个代码呢,已经改造好了。那么改造好之后呀,我们来去debug重启一下啊,看看呢,看能不能给我进行重入。好,那么启动成功之后呢,我们来打开浏览器,好,咱们咱们在浏览器中呢,我们去刷新访问一下。那么此时我们可以发现啊,咱们这个嗯,减库存方法啊,它一直里刷刷刷刷不下去,然后刷不下去。好,那么这是为什么呢?啊,这是因为啊,咱们现在这是两把锁,两把锁那同一线程啊,两把锁。
02:06
那么我们此时呀,就会出问题。呃,为生是两把,两把锁呢,因为我们每拗一次这个对象啊,它就是一把锁啊,一把锁,那么在一组keep里面,一个线程有两把锁的话。那么后续那把锁呀,就会把前面那把锁呢给覆盖掉,路径就被覆盖掉了。那于是呢,呃,我们的第一把锁就无法去释放了啊,那么导致呢,咱们请求呢,永远进行不下去啊,在这个在这个地方呢,坐着。好,那我们如果你想听重入的话,你要验证重入的话啊,咱应该怎么样呢。咱们应该是用同一把锁对角。那我们啊,在这个抵达的方法里面,咱可以把mutic给它传递给,呃,这个sva方法,因为这个使用起来呢,还是有点别扭的啊。啊,因为呢,我这个方法我也不知道将来会有别人啊,别人调我呀,都得啊,还得给我传一个锁对象过来,那万一啊别人嗯,别人没有没有锁呢,对吧,那也得给我传个锁对象过来。
03:10
啊,所以这种玩法呢,其实呃,我觉得啊,不够灵活啊,没有red那个分布式所灵活,也没有我们自己写那个灵活啊。OK,那么这个地方呢,我们就要去接收啊这个啊interrise。For MU对象,但是MU呢,啊,接受过来。那么接着后这角在这个地方呢,就不需要再去应用了,你给它删掉就可以了,那么然后是a release。好,那么这样写好之后呀,我们再来去重新启动一下,OK,看一下是什么情况啊。
04:02
好,我们已经启动成功,那么启动成功之后呢,我们来去刷新,你看此时呢,就可以访问成功。那么咱们这个可重锁呢啊,就测试出来了啊。
我来说两句