Здравствуйте, neFormal, Вы писали:
I>>С одной стороны, это круто, но с другой стороны, классический UI того же виндовса становится на эрланге невозможной задачей, потому что тяжелые блокирующие вызовы, внезапно, вытолкнуть в тред-пул не выйдет, т.к. объекты прибиты гвоздями к конкретному треду. I>>Теоретически, сделать можно, но для UI нужна особая архитектура, которая ввергнет в ужас любого UI-девелопера.
F>хз, никогда не делал гуёвые приложения на нём. F>но не понимаю, откуда там тяжёлые блокирующие вызовы?
Там это где ? В самом эрланге нет таких вещей. Они есть в ОС. Чем больше тебе надо от этой самой ОС, тем больше нужно приседать. Например, в винде весь UI он вот такой — блокирующие вызовы и очень дорогие.
Условно, если ты захочешь писать под винду на эрланге чтото навроде десктоп приложений. Функция SendMessage — блокирующая. Если адресат слегка задумался, на пол-секунды, ты висишь вместе с ним.
Это значит, что нативный поток будет недоступен для других эрланговских процессов, вместе с SendMessage заснёт и эрланговский шедулер, который запущен из расчета по инстанцу на процессорное ядро.
С такими функциями Эрланг поступает следующим образом — делегирует вызов тредпулу, а сам работает со свободными процессами. Как только SendMessage завершился, эрланг продолжает процесс.
Т.е. фактически Эрланг ведет себя как операционная система, только использует кооперативную многозадачность, а не вытесняющую.