LINUX.ORG.RU

История изменений

Исправление ergo, (текущая версия) :

Да, все верно, это некая абстракция с набором атрибутов, какими обладает процесс в ерланге. Ergo имплементирует акторную модель, соответственно, поведение этих процессов основано на обмене сообщениями и набором коллбеков для них. К процессам ОС тут никакого отношения, разумеется, только называние такое же.

Чтобы связать свои горутины с каким-то ergo-процессом, то нужно воспользоваться контекстом (process.Context) этого процесса.

Супервизор работает именно с ergo-процессами. Там под капотом целая событийная машинерия - если процесс завершается по каким-то причинам, то отрабатываются все линки, все мониторы (в том числе и с удаленных ergo-нод). Далее начинается всякая кухня по отработке стратегий перезапуска (temporary, transient, permanent) для каждого из типов супервизора (simple_one_for_one, one_for_one, all_for_one, rest_for_one), с учетом, конечно же, тайминга (N рестартов за время Т).

Там еще не только паттерн supervisor реализован. Еще есть application со своими стратегиями рестарта (аналогично супервизору - temporary, transient, permanent, но там по-другому под капотом отрабатывается). В том числе можно задать время жизни (lifespan) этому applicatoin.

Исправление ergo, :

Да, все верно, это некая абстракция с набором атрибутов, какими обладает процесс в ерланге. Ergo имплементирует акторную модель, соответственно, поведение этих процессов основано на обмене сообщениями и набором коллбеков для них. К процессам ОС тут никакого отношения, разумеется, только называние такое же.

Чтобы связать свои горутины с каким-то ergo-процессом, то нужно воспользоваться контекстом (process.Context) этого процесса.

Супервизор работает именно с ergo-процессами. Там под капотом целая событийная машинерия - если процесс завершается по каким-то причинам, то отрабатываются все линки, все мониторы (в том числе и с удаленных ergo-нод). Далее начинается всякая кухня по отработке стратегий перезапуска (temporary, transient, permanent) для каждого из типов супервизора (simple_one_for_one, one_for_one, all_for_one, rest_for_one), с учетом, конечно же, тайминга (N рестартов за время Т).

Там еще не только паттерн supervisor реализован. Еще application со своими стратегиями рестарта (аналогично супервизору - temporary, transient, permanent). В том числе можно задать время жизни (lifespan) этому applicatoin.

Исходная версия ergo, :

Да, все верно, это некая абстракция с набором атрибутов, какими обладает процесс в ерланге. Ergo имплементирует акторную модель, соответственно, поведение этих процессов основано на обмене сообщениями и набором коллбеков для них. К процессам ОС тут никакого отношения, разумеется, только называние такое же.

Чтобы связать свои горутины с каким-то ergo-процессом, то нужно воспользоваться контекстом (process.Context) этого процесса.

Супервизор работает именно с ergo-процессами. Там под капотом целая событийная машинерия - если процесс завершается по каким-то причинам, то отрабатываются все линки, все мониторы (в том числе и с удаленных ergo-нод). Далее начинается всякая кухня по отработке стратегий перезапуска (temporary, transient, permanent) для каждого из типов супервизора (simple_one_for_one, one_for_one, all_for_one, rest_for_one), с учетом, конечно же, тайминга (N рестартов за время Т).