- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第12章 纤程.PDF
下载
第1 2章 纤 程
M i c r o s o f t公司给Wi n d o w s添加了一种纤程,以便能够非常容易地将现有的 U N I X服务器应
用程序移植到Wi n d o w s 中。U N I X服务器应用程序属于单线程应用程序(由 Wi n d o w s定义),但
是它能够为多个客户程序提供服务。换句话说, U N I X应用程序的开发人员已经创建了他们自
己的线程结构库,他们能够使用这种线程结构库来仿真纯线程。该线程包能够创建多个堆栈,
保存某些C P U寄存器,并且在它们之间进行切换,以便为客户机请求提供服务。
显然,若要取得最佳的性能,这些 U N I X 应用程序必须重新设计,仿真的线程库应该用
Wi n d o w s提供的纯线程来替代。然而,这种重新设计需要花费数月甚至更长的时间才能完成,
因此许多公司首先将它们现有的 U N I X代码移植到Wi n d o w s 中,这样就能够将某些应用软件推
向Wi n d o w s市场。
当你将U N I X代码移植到Wi n d o w s 中时,一些问题就会因此而产生。尤其是 Wi n d o w s 管理
线程的内存栈的方法要比简单地分配内存复杂得多。 Wi n d o w s 内存栈开始时的物理存储器的容
量比较小,然后根据需要逐步扩大。这个过程在第 1 6章“线程的堆栈”中详细介绍。由于结构
化异常处理机制的原因,代码的移植就更加复杂了。
为了能够更快和更正确地将它们的代码移植到 Wi n d o w s 中,M i c r o s o f t公司在操作系统中添
加了纤程。本章将要介绍纤程的概念、负责操作纤程的函数以及如何利用纤程的特性。要记住,
如果有设计得更好的使用Wi n d o w s 自身线程的应用程序,那么应该避免使用纤程。
12.1 纤程的操作
首先要注意的一个问题是,实现线程的是Wi n d o w s 内核。操作系统清楚地知道线程的情况,
并且根据M i c r o s o f t定义的算法对线程进行调度。纤程是以用户方式代码来实现的,内核并不知
道纤程,并且它们是根据用户定义的算法来调度的。由于你定义了纤程的调度算法,因此,就
内核而言,纤程采用非抢占式调度方式。
需要了解的下一个问题是,单线程可以包含一个或多个纤程。就内核而言,线程是抢占调
度的,是正在执行的代码。然而,线程每次执行一个纤程的代码—你决定究竟执行哪个纤程
(随着我们讲解的深入,这些概念将会越来越清楚)。
当使用纤程时,你必须执行的第一步操作是将现有的线程转换成一个纤程。可以通过调用
C o n v e r t T h r e a d To F i b e r 函数来执行这项操作:
该函数为纤程的执行环境分配相应的内存(约为2 0 0字节)。该执行环境由下列元素组成:
• 一个用户定义的值,它被初始化为传递给C o n v e r t T h r e a d To F i b e r 的p v P a r a m参数的值。
• 结构化异常处理链的头。
• 纤程内存栈的最高和最低地址(当将线程转换成纤程时,这也是线程的内存栈)。
• CPU寄存器,包括堆栈指针、指令指针和其他。
当对纤程的执行环境进行分配和初始化后,就可以将执行环境的地址与线程关联起来。该
线程被转换成一个纤程,而纤程则在该线程上运行。 C o n v e r t T h r e a d To F i b e r 函数实际上返回纤
程的执行环境的内存地址。虽然必须在晚些时候使用该地址,但是决不应该自己对该执行环境
288计计第二部分 编程的具体方法
下载
数据进行读写操作,因为必要时纤程函数会为你对该结构的内容进行操作。现在,如果你的纤
程(线程)返回或调用E x i t T h r e a d函数,那么纤程和线程都会终止运行。
除非打算创建更多的纤程以便在同一个线程上运行,否则没有理由将线程转换成纤程。若
要创建另一个纤程,该线程(当前正在运行纤程的线程)可以调用 C r e a t e F i b e r 函数:
C r e a t e F i b e r首先设法创建一个新内存栈,它的大小由 d w S t a c k S i z e参
您可能关注的文档
- 2012足不出户尝遍大江南北特色美味.pdf
- 2010_hbj_seo--搜索引擎SEO基础知识.pdf
- 新浪微博开放平台中的 redis 实践.pdf
- 新编十万个为什么(第05册).pdf
- 携程旅行网在SOA架构方面的探索@刘剡.pdf
- 通过激励行为的方式来推行敏捷改革(Evelyn).pdf
- 让交付的速度跟上思考的速度(潘捷、赵君).pdf
- 开放平台中的OpenAPI设计.pdf
- 架构之路——穿行在产品和业务之间(吴立峰).pdf
- 广东省地税规划方案8.pdf
- 解析卷-人教版9年级数学下册锐角三角函数专题攻克试题(含解析).docx
- 2024年孙吴县农技推广服务特聘计划真题.docx
- 解析卷-人教版9年级数学下册锐角三角函数专题攻克试卷.docx
- 解析卷-人教版9年级数学下册锐角三角函数专题练习试卷(解析版含答案).docx
- 【深交所-2025研报】长虹华意:2025年半年度报告.pdf
- 解析卷-人教版9年级数学下册锐角三角函数专项测试练习题.docx
- 解析卷-人教版9年级数学下册投影与视图综合训练练习题(含答案详解).docx
- 解析卷-人教版9年级数学下册锐角三角函数专项测试练习题(含答案解析).docx
- 考点解析浙教版七年级下册第四章因式分解重点解析练习题(含答案解析).docx
- 【Z人保财险分公司销售人员薪酬现状的调查分析案例3900字】.docx
最近下载
- 数字产业集聚与区域经济韧性——基于省级面板数据的实证分析.pdf VIP
- 职业中学学生职业选择与学习动机研究教学研究课题报告.docx
- PGT25PLUS燃气轮机结构介绍(参考).ppt VIP
- 10.多撇不同向 课件-六年级上册小学书法(苏少版).pptx VIP
- 11一字无二捺 教学课件 六年级上册书法(苏少版).ppt VIP
- 2025年元宇宙产业发展趋势报告:区块链技术基础设施建设创新.docx VIP
- 跨境电商出口跨境电商行业跨境电商出口市场分析与发展趋势报告.docx
- 初中数学教学中推理能力的培养与数学学习策略的关系研究教学研究课题报告.docx
- 跨境电商跨境电商平台跨境电商平台跨境电商平台运营策略研究报告.docx
- 1平正安稳 教学课件 六年级下册书法(苏少版).ppt VIP
文档评论(0)