V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
qaqLjj
V2EX  ›  问与答

有对 juc 的 aqs 比较了解的大佬吗, aqs 内部的队列的头为什么需要一个虚节点?

  •  
  •   qaqLjj · 2020-11-29 20:57:04 +08:00 · 1012 次点击
    这是一个创建于 1484 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,不要可以不可以呢:
    加锁时没阻塞就不入队直接执行,阻塞了就改自己的 state 并入队,
    解锁时通过 head 指针从队列的第一个开始找到合适的(要跳过取消的)节点唤醒。

    上面流程有什么问题吗,虚节点解决了什么问题呢?
    网上搜不到很有说服力的答案,请大佬解惑

    3 条回复    2020-12-02 09:13:15 +08:00
    leonme
        1
    leonme  
       2020-11-29 21:47:53 +08:00
    我理解这是不是就是刷题时常用的 fake node,避免考虑复杂的边界问题
    amiwrong123
        2
    amiwrong123  
       2020-11-30 14:11:55 +08:00 via Android
    没有 dummy node 的话,链表处理会比较麻烦
    qaqLjj
        3
    qaqLjj  
    OP
       2020-12-02 09:13:15 +08:00 via Android
    @amiwrong123 可以再详细些吗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5382 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 09:08 · PVG 17:08 · LAX 01:08 · JFK 04:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.