|
|
1
1
并发LRU缓存的诀窍不在于移除锁(这是一个兔子洞),而在于分散获取锁的必要性。在读取期间,队列最终可以与表保持一致,但在写入之后应该保持一致,以便正确地选择要逐出的受害者。因此,可以缓冲重新排序并避免锁争用。我在Java实现中证明了这种方法的有效性: http://code.google.com/p/concurrentlinkedhashmap/ 因此,虽然我可以为您的问题提供“是”的答案,但更好的答案是,您不需要移除锁,而是了解它的实际需要时间。 |
|
|
2
0
最简单的第一步是在if(最新的)中移动lock语句。=el)阻塞,因为如果newst==el,则根本不需要等待锁。 除此之外,你还要做一些有条件的作业。您是否真的有让您相信本节在性能方面存在问题的分析信息? 如果你真的确信优化这门课是最好的利用你的时间, here's a PDF of the paper "Simple, Fast, and Practical Non-Blocking and Blocking Concurrent Queue Algorithms" . Here's an excellent blog post that might be a little bit more straightforward . |
|
|
GG33 · 在docker中缓存npm包 2 年前 |