文本线程win2008新池讲.pdfVIP

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

第17讲线和Win2008新线

1.线基础知识

2.异步调用队列

3.内核对象等待回调队列

4.定时回调队列

5.完成端口回调队列

6.回调队列型线的缺陷

7.Win2008新线及用法

8.GRSLib中线部分的封装

引言

❖多核硬件平台的普及,使得多线程应用再次成为开发的

热点领域

❖在Windows平台上,创建多线程应用也是非常方便的

事情

❖而很多应用却由于过多的创建了线程而导致性能下降

❖也有很多应用通过打造自己的线机制来高效利用

系统资源

❖在Windows平台上为我们提供了集成在系统内核中的

线功能

❖可以通过API的方法直接利用系统提供的线功能

❖在Win2008以上平台中,使用一组新的线API替换

了原有的线API,并且功能更加丰富

什么是线

❖与内存池本意类似,线其实就是通过提前创建好一

些线程组成一个池,而在需要时直接从池中取用

❖从上述描述中可以看出,线在一定程度上节约了反

复创建和销毁线程的开销

❖可以根据这个原理自行设计线并可通过信标量对

象控制最大可同时执行的线程数)

❖另外在Windows系统中提供了系统级的线对象及

相应的API

为什么使用线

❖在Windows系统中创建和销毁线程本身是一个耗时的操作

❖对于一些服务应用来说,很多时候需要处理的客户请求往往是短小

的任务

❖很多时候为了提高服务应用的响应能力,通常通过多线程的方式来

执行这些任务

❖但是这中间就会过于频繁的创建和销毁线程,这造成了系统性能的

严重浪费

❖而另一方面如果过度的创建了线程(如几千几万个),也会因为频繁

的在不同的线程间来回切换而造成系统性能下降(一次切换大约需

要一千多条机器指令/周期)

❖以创建一千个线程计算,假设一个机器指令需要1ns(1GHZ)来执

行,那么一千多条指令大约需要1000*1ns=1us,而调度一遍所有

1千个线程则需要1000*1us=1ms,这相当于将至强系列CPU通

过低效的软件变成了手掌计算器(实际情况比这个更糟糕)

❖而通过恰当的使用线则可以避免上述的性能问题

Windows线的特性

❖线一般都具有动态调整线程数量的自主行为(称为

伸缩性)

❖通过将任务封装为回调函数的形式,将任务添加到线程

池中,由线选择合适的线程调用之,从而实现任务

的执行

❖调用者不用关心线中的线程创建与销毁工作

,Windows有处理

❖Windows线的使用在一定程度上还简化了多线程

程序设计的难度,使开发人员集中精力到线程本身的执

行逻辑上,而不是何时创建何时销毁等问题上

❖Windows线在实现上实际使用了IOCP对象

Windows内置线

❖从Windows2000起,微软公司在Windows平台中内置了一些线

的功能,以方便开发人员对线程的使用和管理

❖从功能目标上区分大概可以分为下面4种:

◼普通线

◼同步对象等待回调线

◼定时器回调线

◼完成端口回调线

❖这些线的最大特点就是需要提供一个由线中线程调用的

回调函数,当条件满足时,回调函数就会被线调用

❖从设计的角度来说,这样的设计大大简化了应用程序考虑多线程设

计时的难度,此时只需要考虑回调函数中的处理逻辑和被调用的条

件即可,而不必考虑线程的创建销毁等等问题(一些设计还可以绕

开繁琐的同步处理)

❖需要注意的就是一般不要在这些回调函数中设计处理类似UI消息

循环那样的循环,即不要长久占用线中的线程

传统Windows线及API

❖下表展示了传统的线对象和对应的API,因为它们比较古老,

所以兼容性上比较有优势,同时这些古老方法都太简单了(简单的

有点简陋)

线对象API

文档评论(0)

ericxiao + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档