设为首页收藏本站

Erlang中文论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 17549|回复: 0

远程程序调用

[复制链接]
发表于 2015-2-4 02:22:24 | 显示全部楼层 |阅读模式
  有一段时间没有上过贴了。有部分原因是这几天没什么时间;不过主要的原因还是我找不到素材和近况在书上看到的
还是一知半解,所以不敢上贴。希望大家能继续跟帖,我会多加努力多找些好东西。
下面是我这次想介绍的,在本地调用和远程调用中主要是远程节点可能会失效,在《erlang编程指南》中有三种方法解决

1添加一个超时:
   remote_call(Message,Node) ->
       {facserver,Node} ! {self(),Message},
       receive
          {ok,Res} ->
               Res
          after 1000 ->
       end.

2就是链接到服务器进程用到 spawn_link/4,跟spawn/4不同。
     setup() ->
         process_flage(trap_exit,true),
         spawn_link('bar@ST',myrpc,server,[]).

3用monitor_node/2监控节点
      remote_call(Message,Node)  ->
          monitor_node(Node,true),
          {facserver,Node}  ! {self(),Message},
             receive
                {ok,Res} ->
                     monitor_node(Node,false),
                     Res;
                {nodedown,Node} ->
                     {error,node_down}
             end.
我觉得第三种方法是monitor_node(Node,true),向远程监控发送了消息,远程的监控根据节点的
存在与否发送不同的消息回来,所以在调用了monitor_node(Node,true)后就必须用monitor_node(Node,false),
来接收远程发来的消息。



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|Erldoc.com  

GMT+8, 2024-3-29 03:41 , Processed in 0.217209 second(s), 9 queries , File On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表