gpt4 book ai didi

erlang - 我不应该调用 gen_server :stop() directly?

转载 作者:行者123 更新时间:2023-12-04 05:54:47 25 4
gpt4 key购买 nike

LYSE本书作者按如下方式处理服务器终止:

%% Synchronous call
close_shop(Pid) -> gen_server:call(Pid, terminate).

handle_call(terminate, _From, Cats) ->
{stop, normal, ok, Cats}.

terminate(normal, Cats) ->
[io:format("~p was set free.~n",[C#cat.name]) || C <- Cats],
ok.

因此它从 handle_call 回调返回一个 stop 值。

我是这样写的:

close_shop(Pid) -> gen_server:stop(Pid).

terminate(_Reason, {Cats, Money}) ->
io:format("Made $~w~n", [Money]),
[io:format("~p was set free.~n",[C#cat.name]) || C <- Cats].

直接调用 gen_server:stop() 不是一个好习惯吗?

最佳答案

直接调用 gen_server:stop/1,3 并不是一个坏习惯。它做的事情与 LYSE 中的示例几乎相同,但没有从您的模块调用 handle_call/3。尝试检查一下。您甚至可以阅读源代码来确定。

关于erlang - 我不应该调用 gen_server :stop() directly?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35466571/

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