远程过程调用(RPC)与图形用户界面(GUI)开发
1. 远程过程调用(RPC)概述
远程过程调用(RPC)的核心思想是在另一个进程空间中透明地调用子程序,使其表现得就像在本地进程中调用一样。RPC 模块在设计时考虑了以下几个普通子程序调用时的特性:
- 同步性 :调用者会等待被调用的过程完成。RPC 模块通过调用 Msg::send_now 和 Msg::rcv_now 来实现这种阻塞行为。
- 参数处理 :Perl 子程序可以接受任意数量和类型的参数。RPC 模块使用 FreezeThaw 模块来处理参数,将所有参数扁平化并编码为一个字符串(冻结),在接收端再恢复(解冻)。不过, FreezeThaw 和 RPC 目前不支持代码引用。
- 上下文处理 :子程序可以使用 wantarray 来判断调用者指定的是列表还是标量上下文,RPC 模块确保这种上下文的透明性。此外,调用者的包信息也会被正确处理。
- 异常处理 :子程序可以调用 die 抛出异常,RPC 的接收端会在 eval 中调用目标子程序,如果发生异常,会将错误信息发送回调用进程。
- 相互递归 :子程序 A 可以调用子程序 B,而 B 又可以调用 A,RPC 支持这种相互递归,因为它可以在发送消息阻塞时处理传入的
远程过程调用(RPC)与GUI开发详解
超级会员免费看
订阅专栏 解锁全文
1201

被折叠的 条评论
为什么被折叠?



