Каковы процессы Erlang за кадром? - PullRequest
9 голосов
/ 07 мая 2010

У меня очень ограниченные знания об Эрланге, но, насколько я понимаю, он может порождать «процессы» с очень низкой стоимостью.

Так что мне интересно, что это за "закулисные процессы"?

Они Волокна? Потоки? Продолжения?

Ответы [ 4 ]

4 голосов
/ 07 мая 2010
3 голосов
/ 07 мая 2010

Также из документа Erlang:

Процессы Эрланга легки (динамически расти и уменьшаться) с небольшой объем памяти, быстрое создание и прекратить и планирование накладные расходы низкие.

Источник: http://www.erlang.org/doc/reference_manual/processes.html

Возможно, вы также захотите взглянуть на это:

http://www.defmacro.org/ramblings/concurrency.html

Говоря о процессах Эрланга, он говорит:

Процессы Эрланга легки потоки. Они очень дешевые, чтобы начать и уничтожить и очень быстро переключаться между, потому что под капотом они просто функции. Типичный Erlang система работает на современном настольный компьютер может переключаться между многие десятки тысяч таких процессов. Процессы переключаются каждые пару дюжина вызовов функций, которая делает переключает менее гранулированный, но сохраняет огромное количество времени, как правило, впустую при переключении контекста.

1 голос
/ 13 июля 2012

Я не нашел точного источника, но из того, что я понимаю:

  • Существует планировщик (например, или несколько планировщиков, которые действуют совместно), который определяет, какой процесс erlang запуститьв каком потоке ОС.

  • Эти процессы имеют наращиваемый стек (возможно, преамбулу в каждой функции, которая выделяет стек при необходимости), поэтому они не потребляют слишком много памяти, если им это не нужно.

  • Они возвращаются планировщику в зависимости от того, ожидают ли они данных или выполнили их в течение достаточного времени (возможно, код преамбулы в некоторых функциях проверяет, сколько времени прошло)).В отличие от потоков, они не выгружаются?

  • Каждый процесс выделяет память из разных страниц или из другого распределителя, поэтому невозможно совместно использовать память (аналогично процессам ОСизбегайте совместного использования памяти).

  • Предположительно, также наличие отдельных распределителей или страниц для каждого процесса erlang также помогло бы с сборкой мусора, а в случае завершения процесса страницы могут быть возвращены безнеобходимость в любой сборке мусора: http://prog21.dadgum.com/16.html

0 голосов
/ 07 мая 2010

В основном они являются потоками;) Одно адресное пространство для них.

...