fork ....;h reduce

阅读(37) 标签: 跨节点, 多线程, 执行代码块,

描述:

跨节点多线程执行代码块,相当于执行callx(dfx,;h)

语法:

fork  ….;h reduce

备注:

参数序列“...”长度决定并行线程数,其中单值参数将被复制成序列。

将当前执行的网格及上下文复制出多份,用h中多个节点机的多线程分别执行,参数将被拆分后填入各节点机中各线程的本格值,代码块中return的结果将被拼成序列作为主线程的本格值调用子程序。

代码块中不能引用除fork参数外的其它单元格和变量值。

所引用的网格变量(包括格名)将被同时分发到分机网格中。

参数:

….

参数序列,分配到所有服务器任务满额时暂停分配,等待出现空闲服务器再继续分配;若服务器出错,其任务将被重新分配。

h

服务器序列,其中每个服务器的描述均为一个字符串,格式为"地址:端口号",如"192.168.0.86:4001"

reduce

reduce动作,~~表示当前执行reduce的结果,~表示当前工作返回的结果,可省略。

示例:

()、单个参数

 

A

B

 

1

fork [[1,20,6,14,5],[32,8]];["192.168.1.100:8989"]

 

执行fork代码块后,返回多线程的return结果

IMG_256

2

 

=connect("demo")

 

3

 

=B2.query("select * from EMPLOYEE where EID in (?) ",A1)

 

4

 

=B2.close()

 

5

 

return B3

 

 

 

A

B

 

1

[192.168.0.116:8281,192.168.0.129:8281]

 

 

2

[English,Math,PE]

 

 

3

fork  A2;A1

 

执行fork代码块后继续执行reduce动作;192.168.0.129:8281节点机未启动,执行结果返回null

IMG_256

4

 

=connect("demo")

 

5

 

=B4.query("select * from SCORES  where SUBJECT=?",A3)

 

6

reduce

~~|~

 

 

()、多个参数

 

A

B

1

fork [[1,20,6,14,5],[32,8],[3,4],23,12,89,56,90,231,333,111,231],"F";["192.168.1.100:8989","192.168.1.100:8282","192.168.1.100:8283"]

//返回多节点机多线程的return结果

2

 

=connect("demo")

3

 

=B2.query("select * from EMPLOYEE where EID in (?) and GENDER=?",A1(1),A1(2))

4

 

=B2.close()

5

 

return B3

相关概念:

callx()

fork  Ai,