gpt4 book ai didi

error-handling - 设置 gen_server 类型应用程序的状态

转载 作者:行者123 更新时间:2023-12-03 07:51:03 25 4
gpt4 key购买 nike

我试图找出是否可以启动具有给定状态的 gen_server。

我希望能够设置一个监视器/主管,当此服务器崩溃时,它会以其最后一个有效状态重新启动服务器。

任何关于如何解决这个问题的建议都将非常受欢迎。

到目前为止,我唯一的想法是有一个特殊的 handle_call/3 在调用时将服务器状态更改为所需的状态,但我想避免修改服务器模块并尽可能从我的监视器/主管进程中处理这个。

感谢您的时间。

最佳答案

gen_server:init 接受参数 Args。您可以传递您想要的任何状态并将其设置为服务器的状态。您可以将 Args 传递给 start_link,它会为您传递给 init。

http://www.erlang.org/doc/man/gen_server.html#Module:init-1

http://www.erlang.org/doc/man/gen_server.html#start_link-3

我认为在您的情况下,您可能希望将状态存储在 mnesia 中。这样您就不必将最后一个有效状态传递给 gen_server。如果您不想启动 mnesia,可以使用 ETS。在某个不会死的进程中创建公共(public) ETS 并从您的 gen_server 使用它(请注意,当创建 ets 的服务器死时,ets 被销毁)

http://www.erlang.org/doc/man/ets.html

http://www.erlang.org/doc/man/mnesia.html

关于error-handling - 设置 gen_server 类型应用程序的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9767127/

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