stm-channelize
stm-containers
stm-channelize | stm-containers | |
---|---|---|
- | 3 | |
4 | 68 | |
- | - | |
0.0 | 4.1 | |
over 13 years ago | 3 months ago | |
Haskell | Haskell | |
BSD 3-clause "New" or "Revised" License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
stm-channelize
We haven't tracked posts mentioning stm-channelize yet.
Tracking mentions began in Dec 2020.
stm-containers
-
Concurrency in Haskell: Fast, Simple, Correct
https://hackage.haskell.org/package/stm-containers
This library is full of STM-oriented data structures. They perform better than a simple `TVar (Map k v)`.
It's kind of a fun trick actually. The stock Map is just a tree. The STM Map is also a tree but with TVars at each node. So this helps a lot with contention - you only contend along a "spine" instead of across the whole tree, which is O(log n).
-
Software Transactional Memory (1997)
I think you are right about STM being roughly equivalent to snapshot isolation.
What STM offers is an easy way to invent "containers for snapshotted values" aka TVars. Using them carefully may result in better scaling: https://hackage.haskell.org/package/stm-containers
-
How to achieve "Run at most one parallel async action per user"?
how about use stm-containers?
What are some alternatives?
stm-conduit - STM-based channels for conduits.
theatre - Minimalistic actor library for Haskell
stm-hamt - STM-specialised Hash Array Mapped Trie
restricted-workers - Interactive-diagrams
stm-extras - Haskell - Extra functions for STM
stm-chunked-queues - Thread communication queues that group items/requests that occur close together in time