send_request(Node, Module, Function, Args) -> RequestId
OTP 23.0Node = node()
Module = Function = atom()
Args = [term()]
RequestId = request_id()
發送異步call
向節點請求Node
.send_request/4
返回一個請求標識符,稍後將傳遞給receive_response/2
,wait_response/2
, 或者,check_response/2
為了得到調用請求的響應。除了將請求標識符直接傳遞給這些函數之外,還可以使用以下命令將其添加到請求標識符集合中:reqids_add/3
。稍後可以使用這樣的請求標識符集合,以便通過將集合作為參數傳遞給receive_response/3
,wait_response/3
, 或者,check_response/3
。如果您要將請求標識符保存在請求標識符集合中,您可能需要考慮使用send_request/6
反而。
對函數的調用my_call(Node, Module, Function, Args, Timeout)
下麵相當於調用erpc:call(Node, Module, Function, Args,
Timeout)
如果一個人忽視了績效。call()
可以利用選擇性接收優化,無需從頭開始掃描消息隊列以查找匹配的消息。這send_request()/receive_response()
然而,組合不能利用這種優化。
my_call(Node, Module, Function, Args, Timeout) ->
RequestId = erpc:send_request(Node, Module, Function, Args),
erpc:receive_response(RequestId, Timeout).
如果出現以下情況,則會失敗並出現 {erpc, badarg}
error
異常:
-
Node
不是原子。 -
Module
不是原子。 -
Function
不是原子。 -
Args
不是列表。請注意,該列表未在客戶端驗證為正確的列表。
您不能對執行 apply()
的進程做出任何假設。它可能是一個服務器,也可能是一個新生成的進程。
相關用法
- erlang self用法及代碼示例
- erlang select(Table, MatchSpec)用法及代碼示例
- erlang select_replace(Table, MatchSpec)用法及代碼示例
- erlang select_reverse(Continuation)用法及代碼示例
- erlang setelement(Index, Tuple1, Value)用法及代碼示例
- erlang setopts(Socket, Options)用法及代碼示例
- erlang setopts(Opts)用法及代碼示例
- erlang set_token(Token)用法及代碼示例
- erlang seq(From, To)用法及代碼示例
- erlang seed(A1, A2, A3)用法及代碼示例
- erlang select(Tab, Spec)用法及代碼示例
- erlang sin用法及代碼示例
- erlang str用法及代碼示例
- erlang substr用法及代碼示例
- erlang sort用法及代碼示例
- erlang sublist用法及代碼示例
- erlang sum用法及代碼示例
- erlang split_binary用法及代碼示例
- erlang spawn用法及代碼示例
- erlang spawn on Node用法及代碼示例
- erlang spawnlink用法及代碼示例
- erlang safe_fixtable(Table, Fix)用法及代碼示例
- erlang split(Filename)用法及代碼示例
- erlang size(Item)用法及代碼示例
注:本文由純淨天空篩選整理自erlang.org大神的英文原創作品 send_request(Node, Module, Function, Args) -> RequestId。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。