Как вписать не событийные процессы в дерево контроля?
Я хочу иметь возможность порождать множество процессов, которые обрабатывают данные и помещают их в дерево контроля. Однако все поведения по умолчанию, а именно gen_server, gen_fsm и gen_event, управляются событиями. Они должны получать сообщения, чтобы делать вещи. Мне нужны только процессы, которые обрабатывают данные, и в случае их аварийного завершения они должны быть перезапущены их супервизором. Каков наилучший способ сделать это?
1 ответ
Да, все стандартное поведение работает как серверы, так как они сидят и ждут запросов, прежде чем что-то делать. Однако OTP открыт в том смысле, что он предоставляет инструменты, необходимые для реализации процессов, которые не являются поведенческими, но вписываются в деревья контроля и выполняют "правильные действия". Описание того, что необходимо сделать и как это сделать, см. В разделе " Специальные процессы" в документации Erlang.
Это на самом деле не удивительно, так как все поведения OTP реализованы в Erlang, поэтому все "инструменты" есть в библиотеках.