多线程计算机仿真研究

来源 :硅谷 | 被引量 : 0次 | 上传用户:liongliong552
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要: 多线程技术是随着多核处理器而迅速发展起来的,对线程以及多线程的内涵进行介绍,阐述线程工作的模式,并以实例的形式阐述多线程的计算机仿真。
  关键词: 多线程;仿真;编程
  中图分类号:TP3文献标识码:A文章编号:1671-7597(2010)0610072-01
  0 引言
  随着集成电路技术的发展,以处理器为核心的计算机系统越来越广泛地应用于各行各业的计算领域和实际系统中。多线程技术的研究主要源于实时系统的要求,实时系统对多任务的要求比较普遍,典型的应用是实时监控系统要求后台数据采集。多线程技术的引入,不但充分地利用了CPU的空闲时间,而且还大大提高了应用程序在输入输出方面的反应速度。
  多线程可以实现并行处理,避免了某项任务长时间占用CPU时间。要说明的一点是,目前大多数的计算机都是单处理器(CPU)的,为了运行所有这些线程,操作系统为每个独立线程安排一些CPU时间,操作系统以轮换方式向线程提供时间片,这就给人一种假象,好象这些线程都在同时运行。
  1 线程以及多线程
  1.1 进程
  每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。进程也可能是整个程序或者是部分程序的动态执行。它由两个部分组成:一个是操作系统用来管理进程的内核对象;另一个是包含可执行模块或DLL模块的代码、数据以及动态分配的空间地址。每个进程可创建多个并发线程,并由一个主线程开始,这些线程共享该进程内的地址空间、数据和系统资源。
  1.2 线程
  线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。线程基本上是轻量级的进程,它负责在单个程序里执行多任务。包含在进程中的一种实体,线程有自己的运行线索,可以完成一定的任务,可与其他线程共享进程中的共享变量及部分环境、相互之间协同来完成进程所要完成的任务。
  1.3 多线程
  多线程是为了同步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率来提高系统的效率。线程是在同一时间需要完成多项任务的时候实现的。每一个进程至少有一个主执行线程,它无需由用户去主动创建,是由系统自动创建的。用户根据需要在应用程序中创建其它线程,多个线程并发地运行于同一个进程中。
  1.4 线程模型
  多线程块模型(自由线程块模型),多线程块模型(MTA)在每个进程里只有一个块而不是多个块。这单个块控制着多个线程而不是单个线程。这里不需要消息队列,因为所有的线程都是相同的块的一个部分,并且可以共享。这样的程序比单线程模型和STA的执行速度都要块,因为降低了系统的负载,因而可以优化来减少系统idle的时间。
  2 多线程仿真实例分析
  Win32 SDK函数支持进行多线程的程序设计,并提供了操作系统原理中的各种同步、互斥和临界区等操作。Visual C++ 6.0中,使用MFC类库也实现了多线程的程序设计,使得多线程编程更加方便。Win32提供了一系列的API函数来完成线程的创建、挂起、恢复、终结以及通信等工作。下面将介绍其中的一些重要函数。
  2.1 创建线程
  HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes,
   DWORD dwStackSize,
   LPTHREAD_START_ROUTINE lpStartAddress,
   LPVOID lpParameter,
   DWORD dwCreationFlags,
   LPDWORD lpThreadId)。
  该函数在其调用进程的进程空间里创建一个新的线程,并返回已建线程的句柄,其中各参数说明如下:lpThreadAttributes:指向一个 SECURI
  TY_ATTRIBUTES 结构的指针,该结构决定了线程的安全属性,一般置为 NULL;dwStackSize:指定了线程的堆栈深度,一般都设置为0;lpStartAd
  dress:表示新线程开始执行时代码所在函数的地址,即线程的起始地址。一般情况为(LPTHREAD_START_ROUTINE)ThreadFunc,ThreadFunc 是线程函数名;lpParameter:指定了线程执行时传送给线程的32位参数,即线程函数的参数;dwCreationFlags:控制线程创建的附加标志,可以取两种值。如果该参数为0,线程在被创建后就会立即开始执行;如果该参数为CREATE_SUSPENDED,则系统产生线程后,该线程处于挂起状态,并不马上执行,直至函数ResumeThread被调用;lpThreadId:该参数返回所创建线程的ID;如果创建成功则返回线程的句柄,否则返回NULL。
  2.2 挂起线程
  DWORD SuspendThread(HANDLE hThread)
  该函数用于挂起指定的线程,如果函数执行成功,则线程的执行被终止。
  2.3 重新激活线程
  DWORD ResumeThread(HANDLE hThread)
  该函数用于结束线程的挂起状态,执行线程。
  2.4 退出线程
  VOID ExitThread(DWORD dwExitCode)
  该函数用于线程终结自身的执行,主要在线程的执行函数中被调用。其中参数dwExitCode用来设置线程的退出码。
  2.5 终止线程
  BOOL TerminateThread(HANDLE hThread,DWORD dwExitCode);
  一般情况下,线程运行结束之后,线程函数正常返回,但是应用程序可以调用TerminateThread强行终止某一线程的执行。各参数含义如下:
  hThread:将被终结的线程的句柄;dwExitCode:用于指定线程的退出码。
  使用TerminateThread()终止某个线程的执行是不安全的,可能会引起系统不稳定;虽然该函数立即终止线程的执行,但并不释放线程所占用的资源。因此,一般不建议使用该函数。
  2.6 线程间通信
  BOOL PostThreadMessage(DWORD idThread,UINT Msg,WPARAM wParam,LPARAM lParam);
  
  该函数将一条消息放入到指定线程的消息队列中,并且不等到消息被该线程处理时便返回。
  idThread:将接收消息的线程的ID;Msg:指定用来发送的消息;wParam:同消息有关的字参数;lParam:同消息有关的长参数; 调用该函数时,如果即将接收消息的线程没有创建消息循环,则该函数执行失败。
  参考文献:
  [1]Olivier Hersent,David Gurle,Jean-Pierre Petit.IP Telephony Reading:Addison Weslcy,2006,192-220.
  [2]刘东升、李艳军、刘兆辉、宋发兴,多线程在分布式飞行保障训练仿真系统中的应用。科技创新导报,2008年第31期.
  [3]侯捷译,Win32多线程程序设计。华中科技大学出版社,2002.
其他文献
4月23日,我院与深圳市科技咨询服务协会在东莞市松山湖科技产业园技术交流中心举行服务平台签协议式,为入驻我院孵化基地的中小型科技企业量身定做专业服务的服务平台。  中国科学院深圳先进技术研究院、深圳市科技查新中心、南山科技创业服务中心、缔脉科技管理顾问有限公司等知名企业参加了签约仪式,成为服务平台承建机构,为我院孵化基地的中小型科技企业提供全方位的技术、金融、管理服务。  通过这个服务平台,将进一
QT间期虽是反映心室去极和复极化过程的时间,但QT延长主要是心室复极化时间的延迟,有时还可出现T波异常切迹、双峰和U波重叠等造成测量时困难,要用多导同步心电图描记来判定
有关增龄与心电图(ECG)QR S波群电压关系的横向性研究已不少见,但仍无统一认识。WHO于1968年修改的Minnesota ECG编码分类法和Bachman等研究都认为老年人的QR S波群电压较成
播种一棵竹子,拥有满眼翠绿;  播种一个梦想,拥有一片成就。  ——题记  两年前,当我正怀着激动不已的心步入初中这个美丽而神圣的殿堂的时候,我就曾满怀期待地种下过一棵竹子。  竹子发芽了!那嫩绿的新芽悄悄地探出它那调皮的脑袋,还在不声不响地延伸着,延伸着……  我们班的黑板报得了一等奖!我欣喜若狂,想起我忐忑不安地接受我从未担当过的宣传委员一职时的情景,想起我第一次出黑板报时把黑板弄得面目全非的
摘要: 介绍可自适应膨胀防砂筛管模拟试验装置的结构组成,分析其试验原理及流程。利用该装置进行防砂和筛管参数优选试验,试验表明砾砂中值比在6-8时,易于形成稳定砂桥,起到好的防砂效果,为可自适应膨胀防砂筛管的生产应用提供指导。  关键词: 可自适应膨胀防砂筛管;防砂;试验装置  中图分类号:TE-9文献标识码:A文章编号:1671-7597(2010)0610056-01
病史摘要 男性、64岁,因胸闷伴心前区隐痛4h于1986年2月13日急症入院。入院前半月常感胸闷及心前区隐痛,休息及服用硝酸甘油和麝香保心丸后症状缓解。入院前1周常有上呼吸道
0 前言rn 上海建筑设计研究院有限公司(以下简称“上海院”)隶属于上海现代建筑设计集团,由1953年“上海市建筑工程局生产技术处设计科”逐渐发展至今,是一家以建筑设计为主
患者男性,36岁,于1979年10月起反复出现口腔溃疡。1年后有两肘、腕及左踝关节肿痛,活动受限。当时血沉42mm/h(克氏法),抗“0”1500 u,X线片示骨关节正常。经抗风湿治疗无效
数学教学的核心是教会学生用所学的知识解决实际问题,教师在教学中能否提高学生的解题能力,不仅直接关系到学生学习数学的成功与否,而且也是该教师数学教学业务水平高低的重
中图分类号:TP3文献标识码:A文章编号:1671-7597(2010)0610065-01    随着计算机技术和互联网技术的飞速发展,大量信息在世界范围内得以共享,一方面,人们通过网络可以快速方便地获取各种信息;另一方面,通过普通浏览的方式很难在信息的海洋中找到真正需要的信息。面对数以亿计,不断更新的网页,目前的搜索引擎存在一些问题,如对任一范围的话题,返回的文档数过于庞大,且许多文档与话题相