4 ms·
>In Elixir (thanks to Erlang) yo have true pre-emptive multi-tasking >An Erlang process is not a system process. An Erlang process is a lightweight process. Bu
by ComodoHacker 9y ago
>In Elixir (thanks to Erlang) yo have true pre-emptive multi-tasking
>An Erlang process is not a system process. An Erlang process is a lightweight process. But here’s a key difference: there is no way in Erlang for processes to share memory
I'm confused. Is there real concurrency in Erlang? If yes, what Erlang processes use under the hood: system processes or threads? If threads, why they aren't sharing memory?
- devbug 9y agoMapped to system threads. Separate heaps to simplify garbage collection (and improve performance.)
- ramchip 9y agoThe VM has a set of threads called schedulers, all running in parallel. Each scheduler has in turn a set of Erlang processes (possibly thousands) to run. Every process has a pointer to its own separate chunk of heap where it allocates its stuff. The language has no concept of pointer, so there is no way to create a reference to memory owned by another process. You can send a message to another process, but internally the VM will copy the message to that process’ heap.