可编程科学计算器:MFP语言并行计算编程指南

MFP语言对并行计算的支持是通过call ... endcall程序块来实现的。大体流程是:

1.在客户端和服务端分别调用generate_interface函数建立通信界面;

2.服务端调用initialize_local函数监听客户端的连接请求;

3.客户端调用connect函数连接到服务端,该函数返回一个连接对象;

4.客户端将一个call ... endcall程序块,以及所有相关代码,资源文件和整个程序栈的拷贝,发送到服务端。call语句的第一个参数就是connect函数返回的连接对象;

5.如果有需要,客户端继续发送更多的call ... endcall程序块到服务端;

6.服务端接收到客户端的call ... endcall程序块和相关信息之后,为该程序块建立一个独立的沙盒。该沙盒拥有完整一套所在设备的MFP系统库,但是自己用户代码库和用户资源库则是独立的。程序块所在的代码文件和程序块调用的用户代码所在文件会保存在沙盒的用户代码库目录下,所需要的资源文件会保存在沙盒的用户资源库目录下。在服务端,会有多个MFP沙盒在同时运行。由于各个MFP沙盒的程序栈,用户代码库和用户资源库都是独立的,各个MFP沙盒之间不会相互影响,沙盒和MFP服务端本地程序也不会相互影响。

7.服务端运行call ... endcall程序块中的代码之后,通过return语句返回结果。返回的结果将赋值到位于客户端的endcall语句的唯一的参数上。如果endcall没有参数,返回的结果将会被忽略。反过来,如果call ... endcall程序块中的return语句没有返回值,而endcall有一个参数,该在客户端参数的值不变;

8.在客户端,如果代码尝试读取endcall语句的参数变量的值,而这时服务端还没有返回结果,代码将会阻塞,直到服务端返回结果,代码继续运行;

9.如果客户端想关闭连接,可以调用close_connection和close_local函数。如果服务端也调用close_local函数,意味着服务端无法监听其它任何客户端的请求。

详细信息,请参阅以下文档:

并行计算函数

MFP编程语言call和endcall语句

如何在将本机的游戏发送到远程设备上运行