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}。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。