3 ms·
To provide context, understanding this requires a little bit of background knowledge about concurrency paradigms. In concurrent programming, there are a few me
by gavinray 7y ago
To provide context, understanding this requires a little bit of background knowledge about concurrency paradigms.
In concurrent programming, there are a few mental models/approaches you can use to achieve it. Each of them have different "values systems" and tradeoffs, if you will.
In a nutshell, you have:
- Locks (Mutex/Semaphore)
- Communicating Sequential Processes
- Software Transactional Memory
- Actor Model
The Actor Model is a particularly powerful paradigm because it isolates processes and works via message passing and spawning. The reason why Erlang/Elixir are fault-tolerant is because of the BEAM's process model, any given process (more or lesss) can fail and it's not a problem due to isolation.
What this library allows you to do is architect applications in ways such that they are much more resilient to failure and easier to scale out + parallelize/distribute.
It doesn't have to be a networked application either, any code process can be an actor. It applies to any software.
If you want a great overview of the Actor model, there are some slides here which do a fantastic job of illustrating it:
https://cs.nyu.edu/wies/teaching/ppc-14/material/lecture10.pdf https://cs.nyu.edu/wies/teaching/ppc-14/material/lecture10.p...
- michael_j_ward 7y agoDo you have any good resources in learning more about these models / approaches?
- macintux 7y agoI’ve only skimmed this, but it seemed reasonable. https://pragprog.com/book/pb7con/seven-concurrency-models-in-seven-weeks https://pragprog.com/book/pb7con/seven-concurrency-models-in...