MarkLazy
V2EX  ›  问与答

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

  •  
  •   MarkLazy · Nov 29, 2020 · 1378 views
    This topic created in 2013 days ago, the information mentioned may be changed or developed.

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

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

    3 replies    2020-12-02 09:13:15 +08:00
    leon0318
        1
    leon0318  
       Nov 29, 2020
    我理解这是不是就是刷题时常用的 fake node,避免考虑复杂的边界问题
    amiwrong123
        2
    amiwrong123  
       Nov 30, 2020 via Android
    没有 dummy node 的话,链表处理会比较麻烦
    MarkLazy
        3
    MarkLazy  
    OP
       Dec 2, 2020 via Android
    @amiwrong123 可以再详细些吗
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5368 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 54ms · UTC 07:21 · PVG 15:21 · LAX 00:21 · JFK 03:21
    ♥ Do have faith in what you're doing.