多进程多线程在数据采集处理的应用设计

上传人:精****档 文档编号:47262437 上传时间:2018-07-01 格式:PDF 页数:3 大小:372.02KB
返回 下载 相关 举报
多进程多线程在数据采集处理的应用设计_第1页
第1页 / 共3页
多进程多线程在数据采集处理的应用设计_第2页
第2页 / 共3页
多进程多线程在数据采集处理的应用设计_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《多进程多线程在数据采集处理的应用设计》由会员分享,可在线阅读,更多相关《多进程多线程在数据采集处理的应用设计(3页珍藏版)》请在金锄头文库上搜索。

1、福建电脑2 0 0 8年第9期福建电脑多进程多线程在数据采集处理的应用设计连顺金(黎明职业大学计算机与信息工程系福建 泉州3 6 2 0 0 0)【 摘 要】 :本文从数据采集的实际处理出发, 分析研究多进程多线程在数据采集处理系统中的具体应用, 提出了如何利 用Wi n d o w s系统的多进程多线程技术实现更有效的数据采集的设计方法与思路。 【 关键词】 :多进程; 多线程;数据采集处理0、 引言 目前Wi n d o w s系统采用多进程多线程技术,这样给设计一 个多通道并发数据采集处理系统提供了很好的平台。主要实现 在: 多个数据采集控制器的通信连接;为WI N D O WS客户端实

2、时 访问远端数据采集控制器提供中转服务;负责定时调度远端的 数据;管理远端数据采集控制器以及数据采样装置工作参数等 功能。 采用多进程多线程技术进行多通道数据采集处理可以有效 地加快程序的反应速度、 增加执行的效率。 但如何充分利用多进 程多线程的特性来设计更有效的功能结构实现多通道数据采集 是问题的关键,尤其涉及到不同功能结构性要求的场合更是如 此。 1、 多通道数据采集处理的一般方法 1 . 1一般的设计结构 多通道数据采集目前通常是以T C P / I P协议来进行处理的, 其结构分为前端采集, 数据传输, 数据计算, 后台分析四个部分。 一般的多通道数据采集处理后台的设计结构是单进程多

3、线程方 式,其服务结构可简单表示为图1。 在这种结构下, 应用程序启动 一个主进程及多个线程。主进程向系统申请相应的C P U资源、 内存及地址资源,然后通过创设几个线程来分别处理来自多个 通道的数据传输、数据计算及后台分析。可通过调用函数 A f x B e g i n T h r e a d来创建新线程完成数据采集任务。 首先实现控制函数, 定义线程。 当进入该函数, 线程启动; 退 出时, 线程终止。该控制函数声明如下: D WO R DWI N A P I S t a r t S a m p l e T h r e a d ( P V O I Dl p ) ; / /创建采集 线程 l

4、 p参数是一个单精度3 2位值。 该参数接收的值将在线程对 象创建时传递给构造函数。当函数结束时, 应返回一个U I N T类 型的值, 返回0表明成功, 其它值代表不同的错误。 该控制函数建立后, 接着就可以启动线程。由函数A f x B e - g i n T h r e a d创建并初始化一个C Wi n T h r e a d类的对象,启动并返 回该线程的地址。 多线程创建后, 就存在线程间优先级差异及同步等问题。 在 Wi n d o w s操作系统中, 每个任务都具有相应的优先级, 优先级共 有3 2级, 从0到3 1, 系统按照不同的优先级调度线程的运行。 其中0 1 5级是普通

5、优先级, 线程的优先级可以动态变化。高优 先级线程优先运行, 只有高优先级线 程不运行时, 才调度低优先级线程运 行, 优先级相同的线程按照时间片轮 流运行;1 6 3 1级是实时优先级, 实 时优先级与普通优先级的最大区别 在于相同优先级进程的运行不按照 时间片轮转, 而是先运行的线程就先 控制C P U,如果它不主动放弃控制, 同级或低优先级的线程就无法运行。 1 . 2存在的问题 图1的结构只适合比较单一的集中式处理,且无法处理复 杂的功能需求。若要实现多个数据采集控制器的通信连接, 为WI N D O WS客户端实时访问远端数据采集控制器提供中转服 务, 负责定时调度远端的数据, 管理

6、远端数据采集控制器以及数 据采样装置工作参数等功能,采取单进程多线程的结构明显不 满足应用需求。主要体现在: 一是并发处理能力不足; 二是结构 不清晰; 三是分层次管理能力不足; 四是如果需要将数据采集计 算与分析处理分开并接受各自的多线程处理请求就显得力不从 心。 2、 多通道数据采集处理方法的改进 2 . 1改进构思 同样以上面的集中式处理出发,构造一个符合实际需求的 架构。 一方面可满足前面所述的复杂功能的需求, 另一方面在扩 展性方面提供了良好的接口,再者充分利用服务器硬件平台的 多余资源以及T C P / I P协议的便利性进行重新设计, 即将单一的 功能处理提升到多功能并行处理,得

7、以解决以上一般设计结构 所产生的问题。其实际原理就是采用多进程的并行处理与多线 程的协调处理机制。 2 . 2多进程多线程并行处理结构 如图2, 系统创设两个并行处理的进程: 一个是服务进程,主 要是提供中心服务和管理功能;另一个进程是数据采样调度进 程,负责定时调度远程的数据采集以及存储采样返回的数据。图2多进程多线程服务结构示意图 2 . 2 . 1服务进程 服务进程由一个主服务线程和线程池组成。服务进程启动 时会运行一个主服务线程,主服务线程将数据库中的数据采样 点信息和用户信息读入缓冲, 然后建立并初始化线程池, 之后主 服务线程进入到监听网络客户端的连接请求状态中。为了能够 使服务进

8、程实现并发的服务处理能力,我们引入多个工作线程 来处理与多个客户端的连接。线程池的线程个数就是服务进程 所能够并发处理的最大的客户连接数。 有了线程池后, 服务线程只起到任务分配的作用, 它循环监 听客户端的连接请求, 一旦有新的客户端请求连入服务器, 它就 会处理和该客户端的连接, 响应该客户端的请求, 然后到线程队 列中寻找一个“空闲“的线程去全权负责完成该客户端的请求, 服务线程又迅速回到监听状态,继续等待下一个客户的连接请 求。见图3。图3服务结构示意图1单进程多线 程服务结构示意图1 6 1福建电脑福建电脑2 0 0 8年第9期福建电脑2 . 2 . 2数据采样调度进程 系统需要定时

9、向数据采集控制器发出采样命令以获取采集 数据, 负责发起这个定时采样命令的进程是数据采样调度进程。 其按多线程方式进行工作,一个线程负责管理对一个数据采集 控制器的采集, 包括发出采集命令, 接收采集数据, 存储采集数 据, 我们将这个线程简称为“采样线程“, 当采集完毕时, 采样线 程会结束执行, 线程资源被系统回收。 数据采样调度进程发起采样命令的时间是按照每个数据采 集控制器预先设置好的采样时间来确定的。采样时间单元是分 钟, 即采样时间只能设置为X X小时X X分进行采样。数据采样 调度进程内部有一个定时器, 每2 5秒钟产生一个定时信号。收 到定时信号后,数据采样调度进程依次判断每个

10、数据采集控制 器设置的采样时间是否与当前服务器的系统时间相一致,相同 时则启动一个工作线程负责对该数据采集控制器进行采样。 数据采样调度进程在访问远程数据采集控制器时,其无法 直接寻址到远程数据采集控制器,需通过服务进程来实现对远 程数据采集控制器的访问。 这里约定, 由服务器的工作线程转发 往远程数据采集控制器的命令应该是按照“采集控制器与服务 器之间的传输控制协议( 自定义)“进行打包的命令, 所以数据采 样线程应该将发给远程数据采集控制器的命令帧按协议进行打 包后, 再转交给服务器的工作线程进行打包; 另一方面, 服务器 的工作线程接收到远程数据采集控制器发来的数据包时,将其 解包后转交

11、给采样线程,这样采样线程接收到的数据就是采集 板通过4 8 5总线送出的数据。这个过程可用图4描述。图4采集控制器与服务器的进程线程流转图 2 . 3设计方法 2 . 3 . 1服务进程的中转服务 数据采集控制器和WI N D O WS远程客户端的通信全部经由 服务器进行转发,服务进程为WI N D O WS远程客户端实时访问 远程数据采集控制器提供中转服务。首先主服务线程接收到 WI N D O WS远程客户端请求和某个数据采集控制器进行连接的 请求,然后服务线程将此请求转交给一个空闲的工作线程进行 处理, 工作线程接受此请求后, 寻找WI N D O WS远程客户端要连 接的数据采集控制器

12、的通信连接句柄, 找到后, 工作线程会建立 一个转发线程, 然后工作线程返回, 转发线程开始工作。此时转 发线程分别得到了WI N D O WS远程客户端、数据采集控制器通 信的s o c k e t句柄,该转发线程工作时不断的在WI N D O WS远程 客户端和数据采集控制器之间监听双方有无数据传输,一旦有 一方发来数据,转发线程就将收到的数据原封不动转发给另一 方。这样转发过程就实现了WI N D O WS远程客户端和数据采集 控制器之间的正常通信。 2 . 3 . 2服务主进程及线程代码实现 由于这里所设计的客户端与服务器端的网络通信过程包含 多种数据,所以为了在同一通路上传递不同的信

13、息, 需要将数据 进行分组打包,为此我们制定了一个信息传输协议如下: 同步码同步码: 用于标记帧的开始, 长度为6个字节; 帧类型:标记这一帧的类型, 长度为一个字节; 请求类型:标记这一控制帧要请求接收方完成的功能, 长度 为1个字节。 请求序号:该操作的请求系列号,长度为4个字节(无符号整型)。 参数尺寸: 标记请求时要传递的参数的尺寸大小, 长度为一 个4字节( 整型) 。 参数内容: 它存放请求时要传递的参数, 大小不固定。 服 务 主 线 程 的 入 口 函 数 声 明: D WO R DWI N A P IS t a r t - S e r v e r L i s t e n (

14、P V O I Dl p ); 服务主进程的工作流程简单表示为图5。图5服务主进程的工作流程 限于篇幅, 下面仅给出线程的类型:t y p e d e f s t r u c t t a g S e r v e r T h r e a d P o o l C o n t e x t i n ti T h r e a d N o ;/ /线程编号 H A N D L Ed w T h r e a d I D ;/ /线程I D B O O Lb I s B u s y ;/ /线程是否在处理事务 C E v e n t *p E v e n t O b j ;/ /用于线程同步的事件对象的指针

15、B O O Lb E x i t F l a g ;/ /线程退出运行的标志 i n t s o c k f d ;/ /当前处理的s o c k e t客户的句柄 B O O Lb C l i e n t F i r s t S e n d ; / /是否是S O C K E T连接的客户端第一次发数据 i n t i C u r T i m e O u t ;/ /当前设置的超时等待读的时间 S I m g A c t i v e F i l e R e cs A c t i v e F i l e ;/ /该结构变量是为接收客户传来 的文件而定义的 S I m g F r a m e B

16、 r e a k Q u e u e R e c s F B q u e u e ; / /定义处理断帧的队列的记录 c h a r *s z R e v B u f ;/ /接收缓冲首地址,存储接收到的s o c k e t数据 i n t r e v l e n;/ /接收缓冲区长度 S s e r v e r T h r e a d P o o l C o n t e x t; 2 . 3 . 3采样调度进程与服务进程的通信模式 数据采样调度进程与服务进程的通信可通过s o c k e t方式进 行, 采样调度进程与服务进程都运行在服务器上, 所以它们之间 的s o c k e t通信属于本地s o c k e t通信。 当某个远程数据采集控制器的定时采样时间到了,数据采 样调度主进程启动一个工作线程,该线程作为客户端与服务进 程的主服务器线程进行s o c k e t连接,主服务线程监听到连接请 求后, 响应客户端的连接, 然后等待采样线程客户端向服务器发 出请求命令, 这个请求的内容是要求服务器转发。 数据采样线程 发出的命令传送到远程数据采集控制器,主服务线

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号