Вопрос

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

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

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

Это было полезно?

Решение

Также из Эрланга Док:

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

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

Вы можете также захотеть посмотреть на это:

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

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

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

Другие советы

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top