A bit more beginner-oriented than I expected; a couple of notes:
- Actor processes can talk to each other directly; every process has an identity.
- CSP processes can only talk to each other via channels, every process is effectively anonymous.
- Goroutines can share memory? (Really?)
- Elixir uses preemptible scheduling, Go uses co-operative scheduling.
- There’s no built-in way for Go to supervise goroutines (to be notified when a child process crashes, for example).
- Where specifically does Go insert markers for preemption to occur?
- How all-encompassing is Elixir preemptible scheduler? Is it able to force a context-switch at any time? During IO?
- This seems like a good place to find an answer: https://blog.stenmans.org/theBeamBook/#CH-Scheduling