The opaque wrapper type
Modulelrucache-1.2.0.1Haskell98
Data.Cache.LRU.IO
This module contains a mutable wrapping of an LRU in the IO monad, providing atomic access in a concurrent environment. All calls preserve the same semantics as those in Data.Cache.LRU, but perform updates in place. All functions use a single atomic update of the backing structure.
The interface this module provides is opaque. If further control is desired, the Data.Cache.LRU.IO.Internal module can be used in combination with Data.Cache.LRU.Internal.
(This implementation uses an MVar for coarse locking. It's unclear if anything else would give better performance, given that many calls alter the head of the access list.)
- 1 type
- 11 values
- Packagelrucache-1.2.0.1
- Exports12
- LanguageHaskell98
- LicenceBSD-3-Clause
- SourceIO.hs
Make a new AtomicLRU that will not grow beyond the optional maximum size, if specified.
fromList Build a new LRU from the optional maximum size and list of contents. See fromList for the semantics.
Retrieve a list view of an AtomicLRU. See toList for the semantics.
Insert a key/value pair into an AtomicLRU. See insert for the semantics.
Look up a key in an AtomicLRU. See lookup for the semantics.
Remove an item from an AtomicLRU. Returns the value for the removed key, if it was present
Remove the least-recently accessed item from an AtomicLRU. Returns the (key, val) pair removed, if one was present.
Returns the number of elements the AtomicLRU currently contains.
Given a function that takes an LRU and returns one of the same type, use it to modify the contents of this AtomicLRU.
Given a function that takes an LRU and returns an IO action producting one of the same type, use it to modify the contents of this AtomicLRU.