Я пытаюсь понять, как работает BEAM VM, поэтому у меня есть вопрос. Когда кто-то порождает процесс в эрланге, результатом является PID. Означает ли это, что процесс приостанавливается до тех пор, пока не будет создан запрошенный процесс?
Я пытаюсь понять, как работает BEAM VM.
Подробности в бесплатной книге "The Beam Book" .
Означает ли это, что процесс приостанавливается до тех пор, пока не будет создан запрошенный процесс?
Это зависит.
Erlang - это параллельный язык. Когда мы говорим, что процессы выполняются одновременно, мы имеем в виду, что для внешнего наблюдателя кажется, что два процесса выполняются одновременно. В одноядерной системе это достигается преимущественной многозадачностью. Это означает, что один процесс будет работать некоторое время, а затем планировщик виртуальной машины приостановит его и позволит запустить другой процесс. В многоядерной или распределенной системе мы можем достичь истинного параллелизма, то естьдва или более процесса фактически выполняются в одно и то же время. В эмуляторе с поддержкой SMP система использует несколько потоков ОС для косвенного выполнения процессов Erlang, запуская один планировщик и эмулятор на поток. В системе, использующей настройки по умолчанию для ERTS, будет один поток на каждое включенное ядро (физическое или гиперпоточное).
Erlang - это параллельный язык. Когда мы говорим, что процессы выполняются одновременно, мы имеем в виду, что для внешнего наблюдателя кажется, что два процесса выполняются одновременно.
В одноядерной системе это достигается преимущественной многозадачностью. Это означает, что один процесс будет работать некоторое время, а затем планировщик виртуальной машины приостановит его и позволит запустить другой процесс.
В многоядерной или распределенной системе мы можем достичь истинного параллелизма, то естьдва или более процесса фактически выполняются в одно и то же время. В эмуляторе с поддержкой SMP система использует несколько потоков ОС для косвенного выполнения процессов Erlang, запуская один планировщик и эмулятор на поток. В системе, использующей настройки по умолчанию для ERTS, будет один поток на каждое включенное ядро (физическое или гиперпоточное).
Нет, процессы не зависят друг от друга. Вот erlang документы