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

2020-11-29 20:57:04 +08:00
 qaqLjj

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

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

1007 次点击
所在节点    问与答
3 条回复
leonme
2020-11-29 21:47:53 +08:00
我理解这是不是就是刷题时常用的 fake node,避免考虑复杂的边界问题
amiwrong123
2020-11-30 14:11:55 +08:00
没有 dummy node 的话,链表处理会比较麻烦
qaqLjj
2020-12-02 09:13:15 +08:00
@amiwrong123 可以再详细些吗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/730382

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX