免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4016 | 回复: 10
打印 上一主题 下一主题

很想了解多線程和SRVPGM ! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-09 08:58 |只看该作者 |倒序浏览
請問誰有有關SRVPGM,和MULTITHREADS 的資料!!
謝謝!!!!!

论坛徽章:
0
2 [报告]
发表于 2009-12-09 09:00 |只看该作者
關於AS400的

论坛徽章:
0
3 [报告]
发表于 2009-12-09 09:09 |只看该作者
再明確點是RPGLE

论坛徽章:
0
4 [报告]
发表于 2009-12-09 10:00 |只看该作者
补充:
一定要举例
一定要简单
一定要能用

论坛徽章:
0
5 [报告]
发表于 2009-12-09 16:25 |只看该作者

回复 #1 Allen_2020 的帖子

1.线程
  在rpgleV6r1以前支持线程,但是没法直接支持多线程,而在rpgleV6r1中开始就能支持多线程的环境运行.
在V6r1中H表能使用main定义多线程环境中的主线程,然后有主线程来管理其他的nomain_thread,在主线程中定以的变量必须为STATIC(*ALLTHREAD)类型的,因为nomain_thread需要共享main_thread的变量.
2.srvpgm:

1.创建module
module_name: m01:
module code:
  Hnomain
  DM01            pr
  pM01            b                     export
  Dm01            pi
  D.....
  C      'mo1 programm' dsply
  C                     return
  Pm01            e

module_name: m02:
module code:
  Hnomain
  DM02            pr
  pM02            b                     export
  Dm02            pi
  D.....
  C      'mo3 programm' dsply
  C                     return
  Pm02            e

module_name: m03:
module code:
  Hnomain
  DM03            pr
  pM03            b                     export
  Dm03            pi
  D.....
  C      'mo3 programm' dsply
  C                     return
  Pm03            e

2.创建bnd文件(这个文件可有可无,如果没有那么在编译srvpgm时需要将export(*srcfile)改为export(*all))
bnd_name: bm
bnd_code:
  strpgmexp  pgmlvl(*current)
  
     export    symbol('m01')  //*这里使用M01是procedure的名字而不是程序的名字.
     export    symbol('m02')
     export    symbol('m03')

  endpgmexp

3.创建srvpgm
crtsrvpgm srvpgm(mylib/sbm1) module(mylib/m01 mylib/m02 mylib/m03) export(*srcfile)
  srcfile(mylib/bm) srcmbr(bm)

4.创建pgm同时邦定srvpgm
pgm_name: p01
pgm_code:
D p01              pr                       extproc('M01')
c
c                       callp    p01
c
c
c
c                       eval     *inlr =‘1’

4.1 将p01创建成module类型。
4.2 CRTPGM PGM(mylib/p) MODULE(mylib/p01) BNDSRVPGM(mylib/sbm1) OPTION(*DUPPROC)                                                         


建立pgm
CRTPGM PGM(yyTEMP1/RPG5) MODULE(yyTEMP1/RPG3) BNDSRVPGM(yyTEMP1/SRPG) OPTION(*DUPPROC)

论坛徽章:
0
6 [报告]
发表于 2009-12-09 17:43 |只看该作者

回复 #5 huangxkst 的帖子

处理器多Core推出了一些年啦,程序支持多线程是个不错的消息。

论坛徽章:
0
7 [报告]
发表于 2009-12-09 18:15 |只看该作者
多謝 多謝

论坛徽章:
0
8 [报告]
发表于 2009-12-09 19:59 |只看该作者

回复 #5 huangxkst 的帖子

请问v6r1的ile rpg可以启动新线程了吗?

论坛徽章:
0
9 [报告]
发表于 2009-12-09 20:41 |只看该作者
IBM在i v5系统下就已经实现multithread了。IBM网站都有v5和v6《Programming Multithreaded applications》两个版本的redbooks。

五楼的module不能进行multithread处理,因为在module的H表,和pr定义部分要定义并发处理模式,或者流处理模式关键字。做好module的这方面的处理后,这些module就具备multithread的处理的前提了。然后,在有个可以提交运行multithread的应用环境。在一个子系统下,定义的jobq可以同优先级的job并发数大于1,根据应用处理流程和实际需求定义这个并发数。如果应用系统的事物处理较多,module化不合理,并发数太大,就会造成提交的job运行超时,导致失败。

引发400环境下multithread处理的是并发的job,以及job提交后的程序是multithread参数定义的modules组成的。这才是400环境下的多线程处理,包括rpgle编写的modules。

论坛徽章:
0
10 [报告]
发表于 2009-12-10 12:23 |只看该作者

回复 #8 franliu 的帖子

rpgle v6r1上将了可以使用h表上的关键字来支持多线程.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP