gpt4 book ai didi

Erlang:gen_server 还是我自己的自定义服务器?

转载 作者:行者123 更新时间:2023-12-04 16:18:57 27 4
gpt4 key购买 nike

我需要编写一个服务器,它将接收来自其他模块的指令并根据收到的指令采取行动。效率是我主要关心的问题。我也用 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_servermyserver 相比,添加任何开销?

最佳答案

gen_server与自行实现的服务器相比,它的开销可以忽略不计,因为每条消息需要一些额外的函数调用(其中一个是动态的)。我认为您在实现时不应该考虑这一点。您是否在任何时候改变了主意,从 gen_server到您自己的服务器应该很简单。

使用 gen_server 可以获得什么相比一个简单的循环是:

  • 调试(带系统)
  • SASL 日志记录
  • 休眠支持
  • 代码升级支持
  • 关于Erlang:gen_server 还是我自己的自定义服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1839706/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com