AS400多线程编程.doc

  1. 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
  2. 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
  3. 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
AS400多线程编程

线程是比进程更小的单位,可以认为进程是由一个或多个线程组成的。据说以前的400版本并不支持真正的多线程技术,在4.2版后才从内核上提供了对多线程的支持。总之写这份文档的时候,绝大部分版本应该可以支持。 概念 JOB JOB,包含了存储和其它资源这两方面的内容,JOB自身并不能运行。(A job is a container for storage and other resources,and it cannot run by itself) 存储,是指数据和堆栈 (Data and Stack) 其它资源, 包括环境变量、地址、文件描述、该JOB所打开的文件信息、当前工作目录。 绝大部分400上的操作管理命令都是基于JOB的。 JOB的概念我们平时接触得很多。例如说在交互式作业中,用户登录之后,即是启动了一个JOB,系统就需要为其分配相应的资源。我们可以通过WRKACTJOB命令查看活动的作业。而由USER、JOBNAME、JOBID可以定位到唯一的一个JOB,可以使用各种系统命令,来取得指定JOB当前的状态(比如说ACTIVE、MSGW、TIMW等),或者是JOB的信息(RTVJOBA),也可以使用各种系统命令来操作JOB(HOLD,END等)。对JOB的操作、管理都很直观方便。 Process (进程) 进程,是管理程序运行的资源。(Process is container of the memory and resoures of the program)。 在400系统中,一个JOB就代表了一个进程(On IBM system i platforms, a job represent a process) 按照我的理解,启动一个JOB,相当于系统就分配了相应的资源给这个JOB,JOB自身并不负责运行程序;进程则是用来负责管理这个JOB下运行的程序(这里的程序应该并不专指可以CALL的程序,我觉得所有的人机交互应该都是通过程序来完成的,即都是由进程来管理的)。按照上文所说,一个JOB有且仅有一个进程。所以我个人认为在理解上,似乎没有太大必要将进程与JOB刻意区分开来。一个进程可以对应多个运行中的程序(比如程序A调用程序B,那么当前进程就同时管理着程序A、B的资源。也正是基于这种原理,所以400平台上的程序调用,允许有返回数据) 每个进程至少拥有一个线程(任务)来执行程序。 进程是基于JOB的,我们平时所说的多进程并发,实质上指的也就是多JOB并发。 多JOB并发的原理较为简单,就是使用SBMJOB命令提交作业来实现并发处理。通常为了便于管理,会建立专用的子系统,以及专用的JOBD、JOBQ(这里的专用,只是从应用级别而言,建立的方法并没有特殊的地方),也就是说,需要启动多个JOB。 Thread (线程) 线程是程序运行的通道,操作系统通过线程,按照一定顺序去逐步执行程序。(A thread is the path taken by a program while running, the steps performed, and the order in which the steps are performed.) 所有的程序都拥有至少一个线程,对于多线程的程序而言,每一个线程都是独立于其它的线程运行的。 进程中运行的第一个线程,称为初始线程(Initial thread); 并不是所有的JOB都支持多线程(实际上,大部分系统应用中,默认的JOBD的属性都是不支持多线程)。当进程对应的Job支持多线程时,该进程下的其它的非初始线程的线程,称为辅线程(Secondary thread)。 在实际操作中,我们可以通过WRKJOB + 20,来查看线程的状态以及相关的线程信息。 线程的分类 线程可以分为用户线程和核心线程。 按照用户线程的分类,一个进程之下的所有程序线程都共享同一个进程线程;线程的API函数执行任务计划(scheduling policy),判定何时运行新的线程。任务计划决定了在一个时点上,一个进程只能有一个活动的线程。(The scheduling policy allows only one thread to be actively running in the process at a time)。而操作系统只需要关注这个进程单一的任务(Single Task)。 按照核心线程的分类,进程被拆分成若干个独立的任务,一个进程对应的多个核心线程各自处理这些独立的任务。核心线程使用优先的任务计划(preemptive scheduling policy,这里的优先,应该是相对于用户线程而言),操作系统通过这个优先的任务计划,判定当前由哪一个核心线程来使用处理器资源。i5操作系统支持核心线程的处理方式

文档评论(0)

shenlan118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档