Journal of I nner Mongolia Agricultural University
Vol.28 No.2
Jun.2007
基于Lab V I E W测试系统的多线程编程模拟3
郝 磊1, 麻硕士13, 裴喜春2, 崔红梅1
(1.内蒙古农业大学机电工程学院,呼和浩特 010018;
2.内蒙古农业大学计算机与信息工程学院,呼和浩特 010018)
摘要: 本文介绍了多线程编程的相关概念以及Lab V I E W进行多线程编程的相关技术、方法。对测试任务进行分解,利用队列技术,进行多线程编程。结果表明,与单线程编程相比,这种技术可以有效缩短测试任务的运行时间。
关键词: 队列; Lab V I E W; 多线程; 测试系统; 模拟
中图分类号: T N911.6 文献标识码: A 文章编号:1009-3575(2007)02-0150-04
S I M ULATI O N O F MULTI THREAD PRO GRA MM I N G O F
TEST SYSTE M BASED ON LABV I E W
HAO Lei1, MA Shuo-shi13, PE I Xi-chun1, CU I Hong-mei1
(1.College of M echanical and Electrical Engineering,InnerM ongolia A gricultural U niversity,Huhhot 010018,China;
2.College of Co m puter Science and Infor m ation M anage m ent,InnerM ongolia A gricultural U niversity,Huhhot 010018,China)
Ab s tra c t: The concep t of the multithread p r ogra mm ing,the pertinent technol ogy and the s oluti on realized in Lab V I E W were dis2 cussed.First,disasse mble the whole test task int o several step s.Second,realize it by app lying the Queue technol ogy.A s is shown fr om the result of the computer si m ulati on,it can effectively reduce the runti m e of the test task by e mp l oying multithread p r ogramm ing technol ogy comparing with e mp l oying the single thread technol ogy.
Key wo rd s: Queue; labV I E W; multithread; test syste m; si m ulati on
引言
在用Lab V I E W对测试系统进行编程时,程序的执行顺序是严格按照测试系统的数据流向进行的。如图1所示的1个测试系统程序框图,数据依次进入各个小模块,后面的模块必须等到前面的模块执行完后才能开始执行。特别是在有I/O操作时,如数据采集和存储模块,它对应的那个模块用时就比较长。这样当这个模块在运行时,其他模块的等待时间就比较长,将严重影响整个测试系统的实时性。基于W in2 dows的多任务操作系统,将不同的模块分给不同的线程,利用多线程技术,可以解决这类问题。
图1 单线程测试系统示意图
Fig.1Single-thread D iagra m of Test Syste m 1 相关概念[1]
111 多任务
多任务是指在同一台计算机的同一时刻运行多个程序。
112 进程
进程是指程序的1次运行过程,或者说是程序在1个数据集合上的运行过程,是系统进行资源分配的1个单位。在W indows操作系统中,进程就是指1个EXE文件的1次运行过程。
113 线程
线程是指由进程派生出来的1组代码(指令组)的运行过程。1个进程可以产生多个线程,线程共享进程所拥有的全部系统资源。
3收稿日期: 2006-12-20
作者简介: 郝磊(1981-),男,硕士研究生,主要从事机械性能测试与控制方面的研究.
3通讯作者 114 优先级
当1个线程被创建时,系统就会给它设定1个优先级。系统按照线程的优先级别决定它能否优先得到CP U分配给它的时间片。
2 Lab V I E W中的多线程
Lab V I E W软件本身对线程做了很好的支持, Lab V I E W在支持多线程的系统上运行时,用户可以根据任务需求自行创建和撤销线程。同时,将V I分为6个不同的优先级,它们从低到高依次是:Back2 gr ound p ri ority,Nor mal p ri ority,Above Nor mal p ri ori2 ty,H igh p ri ority,Ti m e-Critical p ri ority,Subr outine p ri ority。Lab V I E W为了使各种操作相互分开,又设置了6个执行系统来处理不同优先级的V I,即:U ser interface,Standard,I nstrument I/O,Data acquisiti on, O ther1和O ther2。LabV I E W为每个执行系统分配1个线程池和1个与之相关联的任务队列,如果队列中任务的优先级相同,那么就为每个线程分配1个时间片,排在队列前面的先得到时间片,如果用完所得的时间片后还没有执行完任务就退到队列的末尾,等到下一次轮到时间片继续执行,执行完后退出队列。如果优先级不同,那么优先级高的线程可以优先得到CP U时间片,不受队列的[2]。
另外在Lab V I E W中,还有1个Reentrant execu2 ti on选项,在没有被钩选时,当1个SubV I同时被多个V I调用时,后面调用的V I必须等到该Sub V I执行完以后才能调用;当钩选时,Lab V I E W则为每1个V I分配1套环境变量,各个调用可以同时进行而互不干扰[2]。
3 Lab V I E W多线程编程方法
Lab V I E W是基于数据流的编程语言,所以在Lab V I E W中进行线程的创建、撤销是非常方便的,它隐含了操作系统在进行线程操作的一些基本步骤。在LabV I E W中数据流的起点就是1个任务的开始,所以在程序中每一条数据流,就代表1个线程。只要程序中使用了的数据流,Lab V I E W就会给他分配1个线程。
在程序设计上,可以利用局部变量、全局变量和移位寄存器实现多线程编程,但由于各线程的执行过程相对,如没有1个很好的机制去控制,造成执行混乱,所以Lab V I E W还提供了Notificati on(通告)、Queue(队列)、Se maphore(信号量)、Rendezv ous (集合)和Occurrence(事件)5种多线程编程技术。[1]针对图1的测试系统,我们选用队列技术进行多线程编程模拟,进而与单线程运行效果进行比对。4 测试系统的单线程和多线程程序模拟
411 测试系统程序模块分解
根据测试任务,先分解模块,模块分解的原则是尽可能使分解后的模块间有强内聚度和松耦合度。根据这个原则,一般把测试系统的程序分成如图1所示的采集、显示1、分析、显示2和存储的几个模块。其中采集模块用来处理采集数据和数据的传送;显示1模块的作用是将采集传送过来的数据实时的显示在前面板上;分析的作用是分析显示在前面板上的数据;显示2的作用是把分析后的数据显示在前面板上,可以对处理的效果有个比较;存储的模块是将分析后的数据存储到硬盘或其他存储介质上。
412 模型设计
单线程的模型如图1,模块分别为采集、显示1、分析处理、显示2和存储模块,数据将按照模块出现的前后,依次进入,只分配1个线程。
多线程进行编程模型如图2,模块的分解与单线程的一样,利用队列技术,为每个模块分配1个线程,分别设置数据采集线程、显示线程1、分析线程、显示线程2、存储线程,以及采集数据队列、显示数据队列1、分析数据队列和显示数据队列2
。
图2 多线程测试系统示意图
Fig.2Multithread D iagram of Test Syste m
模型说明:
采集线程负责数据采集和将采集到的数据放入采集队列;显示线程1负责将采集队列的数据取出并显示在前面板上,同时将数据放入显示队列1里;分析线程负责将显示队列1的数据取出并分析,分
151
第2期 郝 磊等: 基于Lab V I E W测试系统的多线程编程模拟
析后的数据放入分析队列里;显示线程2负责将分析队列的数据取出并显示在前面板上,同时将数据放入显示队列2中;存储线程负责从显示队列2中取出数据并保存。线程之间在队列的控制下相对运行。
413 模拟程序设计与实现413.1 程序设置
413.1.1 假设采集需要时间80m s,显示50m s,分析
处理90m s,存储120m s 。
413.1.2 采集和存储V I 的优先级设置为高于正常,显示V I 设置成可重入,其它所有用户子V I 的执行系统和优先级都按默认设置。413.1.3 连续运行
20次,每次传递正弦函数产生
的128个点的数组。
413.1.4 将采集队列,显示队列1,分析队列的队列大小设置为1,
显示队列2的设置为默认即无限大小。
413.1.5 在5个线程中,任一线程中如果队列中没有数据,则无限等待,直到队列中有数据或释放该队列。413.2 程序实现 为了能对比单线程和多线程的程序运行时间,在程序中加上了计算程序运行时间的程序。413.2.1 单线程的程序见图3413.2.2 线程的程序见图4413.2.3 运行结果分析
图3 单线程测试系统模拟程序
Fig .3Si m ulati on Pr ogra m of Single -thread Test Syste m
图4 多线程测试系统模拟程序
Fig .4Si m ulati on Pr ogra m of M ultithread Test Syste m
251内蒙古农业大学学报 2007年
进一步分析可知,为了提高程序的实效性,将前3个队列的大小设置成1(队列里只能存放1个数据),也就是说显示和处理的数据就是刚采集的,这样就保证了显示和分析的数据并发执行;最后1个线程是存储线程,没有实时的要求,所以最后1个队列的大小设置成无限大。在多线程的程序中,运行时间基本是由线程中用时最大的那个模块决定;而在单线程的程序中,运行的时间是由所有模块运行时间的总和决定。
5 结论
对于1,根据其任务功能恰当的分解成几个的模块,利用队列技术的多线程程序设计方法,恰当设置各个模块的优先级,可有效的缩短程序执行时间,提高测试系统的时效性。
参 考 文 献:
[1] 杨乐平.Lab V I E W高级程序设计〔M〕.北京:清华大学
出版社,2003,4,118-226.
[2] 廖双龙.用Lab V I E W进行并行多任务编程〔M〕.国外
电子测量技术,2000,(5):38-40.
[3] 汤子瀛.计算机操作系统〔M〕.西安:西安电子科技大
学出版社,1996,12,35-60.
[4] 雷振山.Lab V I E W7Exp ress使用技术教程〔M〕.北
京:中国铁道出版社,2004,4,177-181.
[5] U sing Lab V I E W t o Create Multithreaded V Is forMaxi m u m
Perfor mance and Reliability.
htt p://scholar.google.com/scholar?hl=zh-CN&lr=
&ne wwindow=1&q=cache:P DfTqy A0dRwJ:zone.ni.
com/devzone%255Cconcep td.nsf/web main/
D2E196C7416F373A862568690074C759/%24File/
AN114.pdf+Lab V I E W+multithread
(上接第101页)
稳定西北边疆少数民族地区的经济发展,保持社会繁荣稳定,保证人民安居乐业,为建设社会主义新农村打下坚实的基础。
4 结论
腰坝滩自开发以来,在建设和发展绿洲过程中大致经历了建设初期、发展、稳定和生态农业发展4个阶段。通过逐步改变落后的生产方式和观念,引进先进技术与思想,加快产业结构调整步伐,最终选择了走高效生态农业的道路,尝试并取得显著效果,使得绿洲初具规模。产业结构调整取得初步效果,农牧业比重日趋合理,农牧民收入不断提高。从2001年开始发展生态农业,人均年收入2672元,到2004年增长为3263元。生态效益和社会效益也表现出喜人成效,发展绿洲生态农业对保护和恢复植被,治理沙化土地,改善区域生态环境发挥了重要作用。
在今后绿洲发展与建设中,要继续坚持走生态农业的道路,将日光节能温棚作为主导产业发展和培育,并采取枣粮间作、节水灌溉、舍饲养殖等措施,积极发展绿色食品生产。同时,结合发展农区养殖业,将产品进行转化后进入市场,提高生产效益。在进一步提高农牧民生活水平的同时,达到保护环境的目的,走可持续发展的道路。
参 考 文 献:
[1] 李文华.生态农业—中国可持续农业的理论与实践
〔M〕.北京:化学工业出版社,2003.777-781.
[2] 刘普幸、孙小舟.干旱区生态农业与人地关系协调
〔J〕.干旱区资源与环境,2004,18(1):7-10.
[3] 李英能.对我国北方地区几种节水灌溉工程技术模式
的探讨〔J〕.节水灌溉,1999,6:1-5.
[4] 史俊通、海江波、李世清.西北地区生态农业建设的思
考〔J〕.干旱地区农业研究,2001,19(1):102-107. [5] 卢兵友.生态农业建设中的水资源生命周期及系统功
能响应〔J〕.自然资源学报,2001,16(5):488-492. [6] 马松尧、.西北地区生态农业体系建设途径探讨
〔J〕.中国沙漠,2004,24(2):191-195.
[7] W ang J ijun,L iu Guobin,Xie Yongsheng,et al.Research
on the Devel opmentModel of Ecol ogical Agriculture in Lo2
ess H illy-Gully Regi on of Northern Shanxi,China〔J〕.
Ecol ogical Economy,2005,Vol.1,No.2:93-99. [8] 黄进勇、王兆骞.中国生态农业模式管理信息及决策
支持系统的建立〔J〕.应用生态学报,2003,14(4):525
-529.
[9] 张壬午.生态农业产业化探析〔J〕.中国生态农业学报,
2004,12(1):14-15.
351
第2期 郝 磊等: 基于Lab V I E W测试系统的多线程编程模拟下载本文