有没有办法告诉 gen_server:“主管已初始化所有 gen_servers,现在您可以发送消息”?
我有一个 worker gen_server,他的工作是在他的监督树中设置其他 gen_servers 的状态。如果我刚开始在我的配置服务器的 init 函数中发送消息,有时它会得到 {noproc, _}。我想这意味着配置服务器太快了:他在主管有足够的时间启动所有工作人员之前发送了消息。我通过将 timer:sleep(500) 放在 config_server:init() 中来解决这个问题,这确保所有 gen_server 都有足够的时间进行初始化,但这似乎是一个不雅的解决方案。
有没有合适的方法来做到这一点?
最佳答案
返回超时元组 0
来自 init
.然后在它返回后立即,handle_info(timeout, State)
将被调用。在 handle_info
进行一些在主管完成初始化之前不会返回的调用(例如 supervisor:which_children
)。
关于erlang - gen_server 启动了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6475450/