Отказоустойчивость и масштабируемость являются основными преимуществами использования процессов по сравнению с потоками.
Система, которая опирается на разделяемую память или какую-либо другую технологию, которая доступна только при использовании потоков, будет бесполезна, когдаВы хотите запустить систему на нескольких машинах.Рано или поздно вам понадобится установить связь между различными процессами.
При использовании процессов вы вынуждены иметь дело с обменом сообщениями, например, именно так Эрланг обрабатывает взаимодействие.Данные не передаются, поэтому нет риска повреждения данных.
Другое преимущество процессов заключается в том, что они могут аварийно завершить работу, и вы можете чувствовать себя относительно безопасно, зная, что вы можете просто перезапустить их (даже через сетевые узлы),Однако в случае сбоя потока может произойти сбой всего процесса, что может привести к выходу из строя всего приложения.Для иллюстрации: если происходит сбой процесса Erlang, вы потеряете только этот телефонный звонок или этот веб-запрос и т. Д. Не все приложение.
Говоря обо всем этом, процессы ОС также имеют много недостатков, которые могут усложнить их работу.использовать, как тот факт, что требуется вечность, чтобы породить новый процесс.Однако у Эрланга есть собственное представление о процессах, которые чрезвычайно легковесны.
С учетом сказанного, это обсуждение действительно является предметом исследования.Если вы хотите вникнуть в подробности, вы можете прочитать статью Джо Армстронга о отказоустойчивых системах] 1 , в ней многое объясняется об Erlang и философии, которая его стимулирует.