Safe Haskell | None |
---|---|
Language | Haskell98 |
- data TreiberStack r a
- newTreiberStack :: (MonadAtomicRef r m, Eq a, Show a) => m (TreiberStack r a)
- pushTreiberStack :: (MonadAtomicRef r m, Eq a, Show a) => TreiberStack r a -> a -> m ()
- popTreiberStack :: (MonadAtomicRef r m, Eq a, Show a) => TreiberStack r a -> m (Maybe a)
Documentation
data TreiberStack r a Source
A Lock-free concurrent Treiber stack usable in any monad, m, that is paired with a reference type, r, by an instance of MonadAtomicRef
.
newTreiberStack :: (MonadAtomicRef r m, Eq a, Show a) => m (TreiberStack r a) Source
Creates a new empty instance of the TreiberStack
. Internally implemented with a reference of type r, which is why they must be atomically modifiable.
pushTreiberStack :: (MonadAtomicRef r m, Eq a, Show a) => TreiberStack r a -> a -> m () Source
Pushes an element on to a Treiber stack.
popTreiberStack :: (MonadAtomicRef r m, Eq a, Show a) => TreiberStack r a -> m (Maybe a) Source
Pops an element of a Treiber stack. Returns Nothing
if the stack is empty.