用@behavior GenStage.Dispatcher
制成的自定义调度程序可以访问其父模块,以{:producer, state, dispatcher: CustomDispatcher}
的身份调用他吗?
我已经意识到调度程序是在与生产者相同的过程中启动的。
例如,如果我尝试从调度程序向生产者启动handle_call
,那么我将收到:
GenStage.call(producer, :test)
** (exit) exited in: GenServer.call(#PID<0.1575.0>, :test, 5000)
** (EXIT) process attempted to call itself
(elixir) lib/gen_server.ex:917: GenServer.call/3
因此,如果出现此错误,是否还有其他明显的方法可以访问生产者的方法?
我知道您可以使用params初始化调度程序,但是我想访问生产者方法/状态,因为它们是通过生产者回调修改的