Copyright | (c) Sergey Vinokurov 2022 |
---|---|
License | Apache-2.0 (see LICENSE) |
Maintainer | serg.foo@gmail.com |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Synopsis
- data Counter
- new :: Int -> IO Counter
- get :: Counter -> IO Int
- set :: Counter -> Int -> IO ()
- cas :: Counter -> Int -> Int -> IO Int
- add :: Counter -> Int -> IO Int
- sub :: Counter -> Int -> IO Int
- and :: Counter -> Int -> IO Int
- or :: Counter -> Int -> IO Int
- xor :: Counter -> Int -> IO Int
- nand :: Counter -> Int -> IO Int
Documentation
Memory location that supports select few atomic operations.
Isomorphic to IORef Int
.
Create
Read/write
Atomic compare and swap, i.e. write the new value if the current value matches the provided old value. Returns the value of the element before the operation
Arithmetic operations
add :: Counter -> Int -> IO Int Source #
Atomically add an amount to the counter and return its old value.
sub :: Counter -> Int -> IO Int Source #
Atomically subtract an amount from the counter and return its old value.
Bitwise operations
and :: Counter -> Int -> IO Int Source #
Atomically combine old value with a new one via bitwise and. Returns old counter value.
or :: Counter -> Int -> IO Int Source #
Atomically combine old value with a new one via bitwise or. Returns old counter value.