gpt4 book ai didi

elixir - 如何在 GenServer 中执行对当前进程的调用?

转载 作者:行者123 更新时间:2023-12-02 09:45:33 26 4
gpt4 key购买 nike

我知道我可以像这样调用 GenServer

GenServer.call(pid, request)
# using a pid

或者像这样

GenServer.call(registered_name, request)
# if I registered the process with a name

但是有没有办法在不知道pid/注册名称的情况下执行模块内的GenServer.call?(即是否有类似GenServer.call(__CURRENT_PROCESS__, request)?)

最佳答案

这根本行不通。 GenServer.call 只是向给定进程发送一条消息,然后等待另一条消息(回复),从而阻塞当前进程。如果您以这种方式向 self 发送消息,该进程将无法自由处理该消息,因为它将被阻止等待回复。因此调用总是会超时。

我怀疑您需要的只是将所需的功能提取到函数中并直接调用它。或者,您可以向当前进程发送cast,有效地告诉它“稍后”执行某些操作。

关于elixir - 如何在 GenServer 中执行对当前进程的调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35364843/

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