Поэтому я смотрел это видео несколько лет назад (2008), где Джо Армстронг объясняет историю Эрланга.
ссылка на видео
Он вполне обоснован, и часть, о которой я спрашиваю, — это когда он говорит это в 13:07:
[Erlang — это] параллельный язык; Я имею в виду, что процессы в
язык являются частью языка программирования. Они не принадлежат
в операционной системе. Это действительно то, что не так с языками
как Java и C ++ в том, что потоки не в программировании
язык; потоки — это то, что есть в операционной системе
и они наследуют все проблемы, которые у них есть в ОС. Один из
проблема в гранулярности системы управления памятью …
И он продолжает о проблемах с управлением потоками и как это связано с этим разрывом между языком и ОС. И затем продолжает говорить, что Erlang имеет уникальную возможность использовать многоядерные технологии по этой причине, а именно, что он может управлять ядрами «напрямую», вообще не используя потоки? Или его неправильно поняли, или, возможно, за последние 8 лет возник один или несколько новых языков, чтобы бросить вызов Эрлангу на этой арене?
Большое спасибо за любые ссылки или комментарии, которые могут пролить свет на этот вопрос.
Erlang VM порождает потоки ОС (по умолчанию один на ядро процессора), и они запускают планировщики процессов. (VM также может порождать больше потоков для операций ввода-вывода, драйверов и NIF-файлов, но они не запускают код Erlang.) Планировщики планируют выполнение кода в процессах Erlang. Каждый процесс Erlang (может быть и должен) очень легок по сравнению с процессами ОС и потоками ОС и полностью отделен друг от друга. Он обеспечивает уникальный дизайн приложений с легкостью, безопасностью, надежностью и элегантностью, используя многоядерный HW. Для получения дополнительной информации о сопоставлении процессов Erlang с ядрами см. мой ответ на другой вопрос. Для подробного объяснения, как планирование работы подробно, см. Erlang Scheduler Подробности и почему это важно блог.
Других решений пока нет …