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

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



