- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第 13 章 多线程与多核编程
多任务的并发执行会用到多线程( multithreading ),而 CPU 的多核( mult-core )化又将
原来只在巨型机中才使用的并行计算( parallel computing )带入普通 PC 应用的多核程序设
计( multi-core programming )中。
13.1 进程与线程
进程( process)是执行中的程序,线程( thread)是一种轻量级的进程。
13.1.1 进程与多任务
现代的操作系统都是多任务( multitask )的,即可同时运行多个程序。进程( process)
是位于内存中正被 CPU 运行的可执行程序。参见图 15-1 。
进程(内存中)
程序 = 运行
可执行文件(磁 /U/ 光盘上)
图 15-1 程序与进程
目前的主流计算机采用的都是冯·诺依曼( John von Neumann )体系结构——存储程序
计算模型,程序( program )就是在内存中顺序存储并以线性模式在 CPU 中串行执行的指令
序列。对于传统的单核 CPU 计算机, 多任务操作系统的实现是通过 CPU 分时 (time-sharing )
和程序并发( concurrency )完成的。即在一个时间段内,操作系统将 CPU 分配给不同的程
序,虽然每一时刻只有一个程序在 CPU 中运行,但是由于 CPU 的速度非常快,在很短的时
间段中可在多个进程间进行多次切换, 所以用户的感觉就像多个程序在同时执行, 我们称之
为多任务的并发。
13.1.2 进程与线程
程序一般包括代码段、数据段和堆栈,对具有 GUI (Graphical User Interfaces,图形用
户界面)的程序还包含资源段。进程( process)是应用程序的执行实例,即正在被执行的程
序。每个进程都有自己的虚拟地址空间,并拥有操作系统分配给它的一组资源,包括堆栈、
寄存器状态等。
线程( thread)是 CPU 的调度单位,是进程中的一个可执行单元,是一条独立的指令执
行路径。线程只有一组 CPU 指令、一组寄存器和一个堆栈,它本身没有其他任何资源,而
是与拥有它的进程共享几乎一切,包括进程的数据、资源和环境变量等。线程的创建、 维护
和管理给操作系统的负担比进程要轻得多,所以才叫轻量级的进程( lightweight process )。
一个进程可以拥有多个线程, 而一个线程只能属于一个进程。 每个进程至少包含一个线
程——主线程, 它负责程序的初始化工作,并执行程序的起始指令。随后, 主线程可为执行
各种不同的任务而分别创建多个子线程。
一个程序的多个运行,可以通过启动该程序的多个实例(即多个进程) 来完成,也可以
1
只运行该程序的一个实例(一个进程) ,而由该进程创建多个线程来做到。显然后者要比前
者更高效, 更能节约系统的有限资源。 这对需要在同一时刻响应成千上万个用户请求的 Web
服务器程序和网
原创力文档


文档评论(0)