Erlang — библиотеки против серверов

Чем больше я изучаю/программирую Erlang, тем больше я понимаю, что мне нужно учиться. Но здесь я хотел бы подтвердить или опровергнуть предположение, которое я сделал:

Допустим два модуля. Один я упаковываю как библиотеку; другой пакет я как сервер. Вопрос: Почему различие?

Предположение: функции во втором модуле должны либо сохранять состояние изолированным от остальной системы, либо выполняться одновременно с другими функциями.

Верно ли это и есть ли единственные две причины для упаковки модуля в виде сервера?

Спасибо,

ЛРП


person Lloyd R. Prentice    schedule 19.11.2013    source источник


Ответы (1)


В целом вы правы, модуль может быть просто набором функций. Он не хранит состояния и не имеет постоянных процессов. Или это может быть что-то, что поддерживает состояние в виде одного или нескольких процессов. Обычно это делается с помощью gen_server, gen_fsm или gen_event в зависимости от того, для чего вы хотите его использовать.

(Конечно, вы можете поддерживать состояние и в mnesia/ets)

person Zachary K    schedule 20.11.2013