- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
附录四 NT 的线程机制
中国科学技术大学 多媒体技术与网络通信实验室 (copyright 1999 )
附录四 NT 的线程机制
—在 VC、Delphi 和 Java 中多线程的实现
多线程是现代操作系统有别与传统操作系统的重要标志之一,不同与传统的多进程概
念。线程也是 Windows NT 引入的先进技术之一。实际上,没有多线程,也就不会有 Windows
NT 的占先式 (Preemptive)多任务。线程是 Windows NT 的唯一的执行单元,Windows NT 就
是靠线程的优先级及分配给 CPU 的时间来调度线程,进而达到多任务的目的的。为了是开
发的应用程序可以利用线程完成特定任务,Windows NT 为开发人员提供了编程接口。但是
调用 Win32 API 中的进程函数,对大多数程序开发人员来说,工作量之大是显而易见的。
MFC 提供 AfxBeginThread()启动线程。在 Java 中利用创建类 Thread 的子类,并重载其 run()
的方法来实现多线程;在 Delphi 中则是创建子类及其 Create()方法来实现多线程,都是面向对
象编程技术的升华。本文将以 NT 为例介绍一下线程机制,并提供用 VC 、Java 和 Delphi 运
行环境中模拟 NT 多线程调度的程序设计思路。
一、线程的基本概念
最早应用线程这一概念的是 DEC 公司 1988 年开发的实时操作系统 VAXELN ,此操作
系统的主要设计者就是 Dave Cutler (Windows NT 的总设计师)。那时的线程概念还比较模
糊,从 1989 年以后,这一概念才陆续见诸于报端,而为国内广大用户理解和接受则是在
Windows NT 发布以后。也许您已经遇见过关于线程的不同定义,例如“一个执行单元”、
“一个独立的程序计数器”、“进程内的一个可调度实体”等等。很多线程的定义都是基本正
确但不完善。具体来说,线程是操作系统分配 CPU 时间的最基本实体,它可以有一下几部
分组成:
○一个唯一的标志符,称为客户ID
○表示处理器状态的一组易变寄存器内容
○用户态栈:线程在用户态下执行使用
○核心态栈:线程在核心态下执行使用
○一个私有存储区,供子系统、运行期程序库及动态链接库使用。
易变寄存器、栈和私有存储区被称为线程描述表,组成线程描述表的实际数据随处理器的不
同而不同。
正如进程在逻辑上表示了操作系统所必须完成的作业一样,线程表示完成该作业的许多
可能子任务之一。在 Windows NT 中,进程并不执行代码,而是有进程拥有的线程执行代码,
所以线程有时又称“执行线程”。线程驻留于进程的虚拟地址空间中,在线程执行中将使用
地址空间进行存储。若同一进程中存在多个线程,则它们共享地址空间和所有的处理器资源,
包括其存取令牌、基本优先级以及对象表中的对象句柄。Windows NT 的内核在处理器上调
度执行程序,这样一来每个进程在可执行之前必须至少具有一个线程。
注意,线程和传统操作系统常常用到的 “进程”的概念是不同的。二者的差别主要体现
在如下两个方面:
首先,同样作为基本的执行单元,线程的划分比进程小。因此,支持多线程的系统要比
只支持多进程的系统并发度高。
如果您在阅读过程中发现疏漏和错误,请您尽快和编者取得联系 network@ cxh@
中国科学技术大学 多媒体技术与网络通信实验室 (copyright 1999 )
其次,进程把内存空间作为自己的资源之一,每个资源都有的 自己的内存单元。与此同
时,线程却共享内存单元,通过共享的内存空间来源交换信息,从而有利提高执行效率。
二、线程的并发性和Windows NT 的多任务
线程的概念和并发性是紧密相关的,多线程的出发点就是为了提高系统的并发性。必须
注意的是,通常我们使用的计算机都是单 CPU 的,因此,所谓的并发执行,实际上从内部
来看仍是串行执行的,只不过由于操作系统可 自动进行任务切换,因而给人一个并发执行的
假象。
比方说,如果有两个并发执行的线程 A 和 B ,我们先启动线程 A 的执行,随即启动线
程 B
您可能关注的文档
- 镇巴县事业单位公开招聘工作人员计划表.doc
- 镇江市少儿羽毛球比赛.doc
- 长兴电大《社交礼仪概论》教学辅导二何忠义二〇一二年上学期.ppt
- 长城润滑油中国房车锦标赛比赛规则附录.PDF
- 长宁区数学二模试题及答案.pdf
- 长安福特福克斯试乘试驾活动方案计划.ppt
- 长岛县一般公共预算收入执行情况表.PDF
- 长岛县疾病预防控制中心.PDF
- 长岛县第二实验学校.PDF
- 长庚大学护理学研究所.ppt
- 2025年贵溪市城区学校选调教师考试笔试试题.docx
- 江苏省连云港市赣榆区2024-2025学年高一下学期6月期末考试 历史 含答案.docx
- 浙江省温州市环大罗山联盟2024-2025高二下学期期末考试 政治 含答案.docx
- 浙江省温州市浙南名校联盟2024-2025学年高二下学期6月期末考试 政治 含答案.docx
- 2025年陕西水务发展集团招聘考试笔试试题.pdf
- 2025年随州市检察机关招聘检察辅助人员考试笔试试题.pdf
- 河北省邢台市2024–2025学年高三物理上学期期末考试试题【含答案】.pdf
- 2025年金华市文物保护与考古研究所招聘考试笔试试题.pdf
- 2025年金华市武义县公安局招聘考试笔试试题.pdf
- 2025年金川县公安局招聘警务辅助人员考试笔试试题.pdf
文档评论(0)