Мне нужно написать сервер, который будет получать инструкции от других модулей и выполнять действия в зависимости от полученных инструкций. Эффективность - моя главная забота. Поэтому я использую 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
?