У меня очень ограниченные знания об Эрланге, но, насколько я понимаю, он может порождать «процессы» с очень низкой стоимостью.
Так что мне интересно, что это за "закулисные процессы"?
Они Волокна? Потоки? Продолжения?
Это Облегченные процессы .
Также см. Мой вопрос Технически, почему процессы в Erlang более эффективны, чем потоки ОС .
Также из документа Erlang:
Процессы Эрланга легки (динамически расти и уменьшаться) с небольшой объем памяти, быстрое создание и прекратить и планирование накладные расходы низкие.
Источник: http://www.erlang.org/doc/reference_manual/processes.html
Возможно, вы также захотите взглянуть на это:
http://www.defmacro.org/ramblings/concurrency.html
Говоря о процессах Эрланга, он говорит:
Процессы Эрланга легки потоки. Они очень дешевые, чтобы начать и уничтожить и очень быстро переключаться между, потому что под капотом они просто функции. Типичный Erlang система работает на современном настольный компьютер может переключаться между многие десятки тысяч таких процессов. Процессы переключаются каждые пару дюжина вызовов функций, которая делает переключает менее гранулированный, но сохраняет огромное количество времени, как правило, впустую при переключении контекста.
Я не нашел точного источника, но из того, что я понимаю:
Существует планировщик (например, или несколько планировщиков, которые действуют совместно), который определяет, какой процесс erlang запуститьв каком потоке ОС.
Эти процессы имеют наращиваемый стек (возможно, преамбулу в каждой функции, которая выделяет стек при необходимости), поэтому они не потребляют слишком много памяти, если им это не нужно.
Они возвращаются планировщику в зависимости от того, ожидают ли они данных или выполнили их в течение достаточного времени (возможно, код преамбулы в некоторых функциях проверяет, сколько времени прошло)).В отличие от потоков, они не выгружаются?
Каждый процесс выделяет память из разных страниц или из другого распределителя, поэтому невозможно совместно использовать память (аналогично процессам ОСизбегайте совместного использования памяти).
Предположительно, также наличие отдельных распределителей или страниц для каждого процесса erlang также помогло бы с сборкой мусора, а в случае завершения процесса страницы могут быть возвращены безнеобходимость в любой сборке мусора: http://prog21.dadgum.com/16.html
В основном они являются потоками;) Одно адресное пространство для них.