In Clojure I have four primitives to manage concurrency scenarios
- Refs - manage coordinated, synchronous changes to shared state
- Atoms - manage uncoordinated, synchronous changes to shared state
- Agents - manage asynchronous changes to shared state
- Vars - manage thread-local state
My questions is - is there a mature equivalent to each of these in Scala?
Assumptions - I'm going to assume that:
- Actors are a different way to solve the problems that agents do - but they are no means a drop-in replacement
- I'm aware there are agent libraries in Scala - I'm curious to know if they're considered mature