- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
清远见——嵌入式培训专家 http ://
“黑色经典”系列之《嵌入式Linux 应用程序开发详解》
9 章 多线程编程
本章目标
在前两章中,读者主要学习了有关进程控制和进程间通信的开发,这些都是Linux 中开发
的基础。在这一章中将学习轻量级进程—线程的开发,由于线程的高效性和可操作性,在大
型程序开发中运用得非常广泛,希望读者能够很好地掌握。
掌握Linux 中线程的基本概念
掌握Linux 中线程的创建及使用
掌握Linux 中线程属性的设置
能够独立编写多线程程序
能够处理多线程中的变量问题
能够处理多线程中的同步文件
清远见嵌入式Linux 应用开发班培训教材
清远见——嵌入式培训专家
9.1 Linux 下线程概述
9.1.1 线程概述
前面已经提到,进程是系统中程序执行和资源分配的基本单位。每个进程都拥有自己的
数据段、代码段和堆栈段,这就造成了进程在进行切换等操作时都需要有比较负责的上下文
切换等动作。为了进一步减少处理机的空转时间支持多处理器和减少上下文切换开销,进程
在演化中出现了另一个概念——线程。它是一个进程内的基本调度单位,也可以称为轻量级
进程。线程是在共享内存空间中并发的多道执行路径,它们共享一个进程的资源,如文件描
述和信号处理。因此,大大减少了上下文切换的开销。
同进程一样,线程也将相关的变量值放在线程控制表内。一个进程可以有多个线程,也就
是有多个线程控制表及堆栈寄存器,但却共享一个用户地址空间。要注意的是,由于线程共享
了进程的资源和地址空间,因此,任何线程对系统资源的操作都会给其他线程带来影响,因此,
多线程中的同步就是非常重要的问题了。在多线程系统中,进程与进程的关系如表9.1 所示。
进程
用户地址空间
线程一 线程二 线程三
图9.1 进程与线程关系
9.1.2 线程分类
线程按照其调度者可以分为用户级线程和核心级线程两种。
(1)用户级线程
用户级线程主要解决的是上下文切换的问题,它的调度算法和调度过程全部由用户自行
选择决定,在运行时不需要特定的内核支持。在这里,操作系统往往会提供一个用户空间的
线程库,该线程库提供了线程的创建、调度、撤销等功能,而内核仍然仅对进程进行管理。
清远见嵌入式Linux 应用开发班培训教材
《嵌入式Linux 应用程序开发详解》——第9 章、多线程编程
如果一个进程中的某一个线程调用了一个阻塞的系统调用,那么该进程包括该进程中的其他
所有线程也同时被阻塞。这种用户级线程的主要缺点是在一个进程中的多个线程的调度中无
法发挥多处理器的优势。
(2 )核心级线程
这种线程允许不同进程中的线程按照同一相对优先调度方法进行调度,这样就可以发挥
多处理器的并发优势。
现在大多数系统都采用用户级线程与核心级线程并存的方法。一个用户级线程可以对应
一个或几个核心级线程,也就是 “一对一”或“多对一”模型。
文档评论(0)