LRU 算法的一个问题请教

2020-12-15 15:01:45 +08:00
 zxCoder

比如内存里一个页面缓存队列 A B C D E

第一种情况当加入 F 时,淘汰 A

第二种情况当加入 C 时,应该是把 C 放到队尾,也就是 A B D E C

但是又看到另外一种做法,维护的是一个淘汰队列,比如也是 A B C D E

然后当 C 再被访问的时候,直接把 C 删除,变成 A B D E

突然有点晕,这两种做法本质是一样的吗

619 次点击
所在节点    问与答
4 条回复
ysc3839
2020-12-15 20:16:07 +08:00
我觉得不可能一样吧?把 C 的缓存删了,下次访问不就又要重新读取了吗?
hanxiV2EX
2020-12-15 23:28:27 +08:00
你可能是看漏了什么,应该是把 C 删除,然后把 C 推到队列尾部
mxalbert1996
2020-12-16 00:06:13 +08:00
你看错了吧,把 C 删除难道你永远都不淘汰 C 么?
zxCoder
2020-12-16 08:46:00 +08:00
感觉是维护了每个项访问的线程数量,当数量为 0 时,就加入这个淘汰队列,当数量不为 0 时,就直接从淘汰队列删除,而不是放到最后


@ysc3839
@hanxiV2EX
@mxalbert1996

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

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

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

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

© 2021 V2EX