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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。