Elixir语言中 GenServer.multi_call
相关用法介绍如下。
用法:
multi_call(nodes \\ [node() | Node.list()], name, request, timeout \\ :infinity)
@spec multi_call([node()], name :: atom(), term(), timeout()) ::
{replies :: [{node(), term()}], bad_nodes :: [node()]}
调用在指定的 nodes
本地注册为 name
的所有服务器。
首先,request
被发送到 nodes
中的每个节点;然后,调用者等待回复。此函数返回一个二元素元组{replies, bad_nodes}
,其中:
replies
- 是{node, reply}
元组的列表,其中node
是回复的节点,reply
是它的回复bad_nodes
- 是一个节点列表,这些节点或者不存在,或者具有给定name
的服务器不存在或没有回复
nodes
是请求发送到的节点名称列表。默认值为所有已知节点(包括该节点)的列表。
为了避免迟到的答案(超时后)污染调用者的消息队列,中间人进程用于进行实际调用。当迟到的答案到达终止的进程时,它们将被丢弃。
例子
假设
模块的文档中提到的 GenServer
Stack
GenServer 在 :"foo@my-machine"
和 :"bar@my-machine"
节点中注册为 Stack
:
GenServer.multi_call(Stack, :pop)
#=> {[{:"foo@my-machine", :hello}, {:"bar@my-machine", :world}], []}
相关用法
- Elixir GenServer.reply用法及代码示例
- Elixir GenServer.whereis用法及代码示例
- Elixir GenServer用法及代码示例
- Elixir StringIO.flush用法及代码示例
- Elixir Calendar.ISO.date_to_string用法及代码示例
- Elixir Enum.unzip用法及代码示例
- Elixir Date.add用法及代码示例
- Elixir Keyword.get用法及代码示例
- Elixir Stream用法及代码示例
- Elixir Registry.count_match用法及代码示例
- Elixir List.keyfind!用法及代码示例
- Elixir URI.decode用法及代码示例
- Elixir Integer.pow用法及代码示例
- Elixir NaiveDateTime用法及代码示例
- Elixir Enum.min_max用法及代码示例
- Elixir Path.basename用法及代码示例
- Elixir Code.prepend_path用法及代码示例
- Elixir Calendar.ISO.time_to_string用法及代码示例
- Elixir Bitwise.~~~expr用法及代码示例
- Elixir Kernel.SpecialForms.case用法及代码示例
- Elixir String.contains?用法及代码示例
- Elixir Map.keys用法及代码示例
- Elixir Version用法及代码示例
- Elixir Kernel.round用法及代码示例
- Elixir Kernel.left / right用法及代码示例
注:本文由纯净天空筛选整理自elixir-lang.org大神的英文原创作品 GenServer.multi_call(nodes \\ [node() | Node.list()], name, request, timeout \\ :infinity)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。