multicall(Nodes, Module, Function, Args, Timeout) ->
{ResL, BadNodes}
类型:
Nodes = [node()]
Module = module()
Function = atom()
Args = [term()]
Timeout = 0..4294967295 | infinity
ResL = [Res :: term() | {badrpc, Reason :: term()}]
BadNodes = [node()]
与 RPC 不同,多重调用是从一个客户端同时发送到多个服务器的 RPC。这对于从一组节点收集信息或在一组节点上调用函数以实现一些副作用非常有用。它在语义上与在所有节点上迭代地进行一系列 RPC 相同,但多重调用速度更快,因为所有请求都是同时发送的,并在返回时被逐一收集。
该函数在指定节点上评估apply(Module,
Function, Args)
并收集答案。它返回 {ResL, BadNodes}
,其中 BadNodes
是不存在的节点列表,ResL
是返回值列表,或 {badrpc, Reason}
表示失败的调用。 Timeout
是以毫秒为单位的时间(整数),或 infinity
。
当新的目标代码要加载到网络中的所有节点上时,以下示例非常有用,并指出了 RPC 可能产生的一些副作用:
%% Find object code for module Mod
{Mod, Bin, File} = code:get_object_code(Mod),
%% and load it on all nodes including this one
{ResL, _} = rpc:multicall(code, load_binary, [Mod, File, Bin]),
%% and then maybe check the ResL list.
注意
如果您希望能够区分结果,您可能需要考虑使用multicall(Nodes, Module, Function, Args)函数从erpc
模块代替。
注意
您不能对执行 apply()
的进程做出任何假设。它可能是调用进程本身、rpc
服务器、另一个服务器或新生成的进程。
相关用法
- erlang multicall(Nodes, Module, Function, Args)用法及代码示例
- erlang multiple_relative_product(TupleOfBinRels, BinRel1)用法及代码示例
- erlang max用法及代码示例
- erlang member用法及代码示例
- erlang min用法及代码示例
- erlang merge用法及代码示例
- erlang make_dir用法及代码示例
- erlang memory用法及代码示例
- erlang match(Table, Pattern)用法及代码示例
- erlang match_spec_run(List, CompiledMatchSpec)用法及代码示例
- erlang make_tuple(Arity, InitialValue)用法及代码示例
- erlang make_tuple(Arity, DefaultValue, InitList)用法及代码示例
- erlang map_get(Key, Map)用法及代码示例
- erlang map_size(Map)用法及代码示例
- erlang max(Term1, Term2)用法及代码示例
- erlang memory()用法及代码示例
- erlang min(Term1, Term2)用法及代码示例
- erlang monitor(Type :: process, Item :: monitor_process_identifier())用法及代码示例
- erlang monitor(Type :: process, Item :: monitor_process_identifier(), Opts :: [monitor_option()])用法及代码示例
- erlang map(Fun, Orddict1)用法及代码示例
- erlang merge(Fun, Orddict1, Orddict2)用法及代码示例
- erlang module(AbsForms)用法及代码示例
- erlang monitor(Socket)用法及代码示例
- erlang map(Fun, MapOrIter)用法及代码示例
- erlang merge(Map1, Map2)用法及代码示例
注:本文由纯净天空筛选整理自erlang.org大神的英文原创作品 multicall(Nodes, Module, Function, Args, Timeout) -> {ResL, BadNodes}。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。