v2.3.3
What's changed
- Eliminated all races in
ConcurrentLru
eviction logic, and the transition between the cold cache and warm cache eviction routines. This prevents a variety of rare 'off by one item count' situations that could needlessly evict items when the cache is within bounds. - Fix
ConcurrentLru.Clear()
to always clear the cache when items in the warm queue are marked as accessed. - Optimize
ConcurrentLfu
drain buffers logic to give ~5% better throughput (measured by the eviction throughput test). - Cache the
ConcurrentLfu
drain buffers delegate to prevent allocating a closure when scheduling maintenance. BackgroundThreadScheduler
andThreadPoolScheduler
now useTaskScheduler.Default
, instead of implicitly usingTaskScheduler.Current
(fixes CA2008).ScopedAsyncCache
now internally callsConfigureAwait(false)
when awaiting tasks (fixes CA2007).- Fix
ConcurrentLru
debugger display on .NET Standard.
Full changelog: v2.3.2...v2.3.3