zoukankan      html  css  js  c++  java
  • AQS双队列作用

    今天依旧是吹爆lau哥的一天~

    众所周知(客套一下),AQS是使用了同步队列+条件队列来实现锁机制的。

    那么为什么要使用两个队列呢?

    我看着AQS的源码看了两天多,记了这里忘了那里,会了这里懵了那里,最后看完了,脑袋浆糊了。

    然后去问大佬。

    大佬做了个简单的比喻。(下面是转述,不是大佬的原话,原话更加清晰,只可惜公司电脑与手机无法沟通,所以我转述一下)

    说这个机制就像是上厕所,大家都在排队上厕所,但是坑就只有一个,每个人都在自旋,判断自己是不是第一个,如果是第一个就去尝试获得厕所的使用权,当正在上厕所的人上完了,释放厕所使用权,那么他就可以进去,然后下一个变成第一个,等待。这段就是同步队列的基本逻辑。

    但是上厕所也有大号小号,所以厕所管理员会把不那么急切的上小号的人放到条件队列里面去。当急切的人上完了,再把他们移转导同步队列去,按照之前的逻辑进行获取。

    坑==资源

    大号排队==同步队列

    小号排队==条件队列

  • 相关阅读:
    XCode Playground Overview
    Swift开发学习(二):Playground
    swift网址
    swift关于is和as的解释
    Swift之 ? 和 !
    Swift 学习之二十一:?和 !(详解)
    Swift学习三
    Makefile project
    20171110面试笔记 服务器端程序员+C/C++开发
    关键字
  • 原文地址:https://www.cnblogs.com/hekiraku/p/11983093.html
Copyright © 2011-2022 走看看