多线程编程应用技术

多线程编程应用技术

ID:14599946

大小:28.00 KB

页数:4页

时间:2018-07-29

多线程编程应用技术_第1页
多线程编程应用技术_第2页
多线程编程应用技术_第3页
多线程编程应用技术_第4页
资源描述:

《多线程编程应用技术》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、多线程编程应用技术一.线程的基本概念线程(Thread)一词最早是二十世纪60年代。当时还没有现代意义上的计算机操作系统。有专家设想了一种未来的由多个CPU所构成的计算机系统可同时进行多个不同的计算。在计算之前,将一个较为复杂的计算分解为多个串行和并行的计算单元,然后让每个CPU同时处理一个并行计算单元的计算过程,在达到某个时刻的时候,所有的并行计算单元的结果都可以肯定得到,从而为下一个串行计算作好准备。这样的多CPU计算机系统的计算速度要大大的高于单CPU结构的计算机系统。而当时的研究人员为每个并行计算单元找到了一个词汇—线程。真正意义上实现线程概

2、念的操作系统是1986年SUN公司推出的Solaris2.x系统。⒈线程的定义和属性相对于现代计算机操作系统中进程(Process)概念,计算机学科对线程的定义是共享同一进程所拥有的存储器、文件系统、I/O设备等资源并具备独立使用CPU资源完成一个规定计算的处理过程的计算机指令系统的总和。线程有着如下的特点:·并行—在多CPU系统中每个线程可同时各自占用一个CPU资源;在单CPU系统中由其归属进程事先规定好每个线程占用CPU资源的时间片和优先级,由操作系统对其进行CPU时间片轮循控制。·三态变化—除了等待CPU资源状态之外,线程可以被其归属进程设定为

3、挂起和击活状态。·线程属性—以面向对象的概念去解释线程可有下述属性:―线程号(ThreadID);―寄存器状态(包括程序计数器和堆栈指针);―堆栈;―信号掩码(Signalmask);―优先级(Priority);―线程私有的存储段(Thread-privatestorage);⒉共享进程资源的调度策略由于线程可以共享进程的执行代码和大部分数据,共享数据被一个线程修改之后,归属该进程的其他线程是可以访问的。利用此特性,当归属一个进程的两个以上线程彼此间进行数据交换(通信)的时候,可以不经过操作系统的帮助。这样,可以避免或极大的减少与系统内核之间的互相

4、切换(即虚拟交换的),从而大大提高程序的处理效率。一个进程占用系统内核资源的规模与其开设的线程数目无关。当然一个进程对属于自身的线程应在种类和数量两方面进行管理。同类线程数量的过大会造成CPU的过负荷状态的发生。种类的过多会造成进程对线程调度处理的开销过大。于是人们想出了一个管理方案,事先将某一类线程与其有关的系统资源绑定,并将其置于一个线程库内,调用时便到该线程库查找,从而大大降低了进程对线程调度的管理开销。因此又将具备此类结构特征的线程称为轻进程(LightweightPorcesses或LWP)。二.MFC多线程编程技术⒈MFC线程分类①辅助线

5、程(WorkerThread)辅助线程不支持Windows的消息机制,通常用来执行后台计算或维护任务。②用户界面线程(UserInterfaceThread)用户界面线程支持Windows的消息机制,可用来处理用户的输入,响应归属进程产生的事件和消息(即属于上面提到的轻进程)。⒉主线程与归属线程设计要点Windows操作系统中每个进程都有一个主线程,随进程起动时获得其所需要的资源。在其归属线程工作期间的大部分时间内,可以代替进程对其他线程进行调度和管理。WinApp类对象就是主线程的归宿,其他归属线程则由程序员设计。设计归属线程时要主要下述要点:①由

6、于不少可视化对象都是按一个归属线程设计安排的,其成员的工作地址是不固定的,因此在线程访问这些对象(成员数据、成员函数)时不要直接使用对象指针,而是应通过其句柄值再获得其当时的地址。②在单CPU处理机中调试多线程应用时,应为每个归属线程安排足够的CPU休眠时间,以保证轮循能正常展开。③对非绑定线程要设置事件对象,以使其归属进程能够随意控制其运行状态。⒊MFC线程类与API函数简介⒋MFC线程与资源的同步技术

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。