diff options
| author | 2026-06-09 05:15:58 +0000 | |
|---|---|---|
| committer | 2026-06-09 05:15:58 +0000 | |
| commit | 55676a35757bcbf2fa40cc3fd144ba412c65b658 (patch) | |
| tree | 4c75c8497941d7b8c8c5530f5467bf42610c3f10 /internal/cache/clock/shard_read.go | |
| parent | internal/lru: Add sharded CLOCK (diff) | |
| signature | No signature | |
internal/cache: add (and move clock to internal/cache/clock)
Diffstat (limited to 'internal/cache/clock/shard_read.go')
| -rw-r--r-- | internal/cache/clock/shard_read.go | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/internal/cache/clock/shard_read.go b/internal/cache/clock/shard_read.go new file mode 100644 index 00000000..624e3409 --- /dev/null +++ b/internal/cache/clock/shard_read.go @@ -0,0 +1,33 @@ +package clock + +// get returns the value for key and marks it referenced. +// +//nolint:ireturn +func (shard *shard[K, V]) get(key K) (V, bool) { + e, ok := shard.items.Load(key) + if !ok { + var zero V + + return zero, false + } + + if !e.referenced.Load() { + e.referenced.Store(true) + } + + return e.value, true +} + +// peek returns the value for key without affecting eviction. +// +//nolint:ireturn +func (shard *shard[K, V]) peek(key K) (V, bool) { + e, ok := shard.items.Load(key) + if !ok { + var zero V + + return zero, false + } + + return e.value, true +} |
