当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


erlang send_request(Node, Module, Function, Args)用法及代码示例


send_request(Node, Module, Function, Args) -> RequestId
OTP 23.0
类型:
Node = 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.org大神的英文原创作品 send_request(Node, Module, Function, Args) -> RequestId。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。