seb*_*now 1 erlang elixir gen-server
在阅读GenServer和Agent的文档时,我想知道哪些Agent
解决方案无法解决用例GenServer
?所以,当喜欢Agent
了GenServer
?
我知道您自己的代理中定义的功能会在代理进程本身上执行,因此可以肯定这是一个很大的区别。
在阅读GenServer和Agent的文档时,我想知道Agent解决GenServer无法解决的用例是什么?
没有一个GenServer
不能实现,因为它Agent
是在之上实现的GenServer
(并且很简单,只需查看源代码)。
那么,何时选择Agent而不是GenServer?
当特殊情况实施时Agent
就足够了。例如:没有异步回复,在调用和强制转换之间没有区别,等等。
我知道您自己的代理中定义的功能会在代理进程本身上执行
它不是“在您自己的代理中定义”的函数,而是那些作为参数传递给Agent.get
/ update
/ etc的函数。
来自文档的示例:
# Compute in the agent/server
def get_something(agent) do
Agent.get(agent, fn state -> do_something_expensive(state) end)
end
# Compute in the agent/client
def get_something(agent) do
Agent.get(agent, & &1) |> do_something_expensive()
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
84 次 |
最近记录: |