Мне нужно написать сервер, который будет получать инструкции от других модулей и выполнять действия в зависимости от полученных инструкций. Эффективность — моя главная задача. Итак, я использую gen_server
или пишу свой собственный сервер. Под «мой собственный сервер» я имею в виду что-то вроде:
-module(myserver).
-export([start/0, loop/0]).
start() ->
spawn(myserver, loop, []).
loop() ->
receive
{From, Msg} -> %Do some action here... ;
message2 -> %Do some action here...;
message3 -> %Do some action here...;
message4 -> %Do some action here...;
.
.
.
_-> ok
end,
loop().
Итак, чтобы использовать myserver
, я, вероятно, зарегистрирую процесс под зарегистрированным именем при его запуске, и тогда каждый клиент будет отправлять сообщения на сервер, используя этот pid.
Так должен ли я использовать этот метод или вместо этого реализовать сервер, используя поведение gen_server
? Есть ли преимущества в использовании gen_server
? Но добавит ли использование gen_server
каких-либо накладных расходов по сравнению с myserver
?