- 1、本文档共55页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式Linux线程
main线程和function线程交替运行,两者都可以实现对run_now的操作。如何实现对它的锁定? 为互斥量加锁 代表共享资源 访问run_now的function线程函数 定义互斥量 main都干了什么? 初始化互斥量 创建新线程 对互斥量上锁,上锁成功显示main lock main都干了什么? 执行循环操作 给互斥变量解锁,显示解锁成功 收回互斥变量资源 等待线程结束,释放资源 “main都干了什么?”的简化版 初始化互斥量 创建新线程 对互斥量上锁,上锁成功显示main lock 执行循环操作 给互斥变量解锁,显示解锁成功 收回互斥变量资源 等待线程结束,释放资源 简化后的main运行结果 练习 2.信号量线程控制 (1)信号量说明 信号量也就是操作系统中所用到的PV 原语,它广泛用于进程或线程间的同步与互斥。信号量本质上是一个非负的整数计数器,它被用来控制对公共资源的访问。 PV原语 PV原语是对整数计数器信号量sem的操作。一次P操作使sem减一,而一次V操作sem加一。进程(或线程)根据信号量的值来判断是否对公共资源具有访问权限。当信号量sem 的值大于等于零时,该进程(或线程)具有公共资源的访问权限;相反,当信号量sem的值小于零时,该进程(或线程)就将阻塞直到信号量sem的值大于等于0 为止。 第9章 嵌入式Linux多线程开发 本章教学目的及要求 了解Linux的多线程概念 掌握Linux多线程相关的API 理解Linux多线程的通信机制及常用方法 线程的概念 进程是系统中程序执行和资源分配的基本单位。每个进程都拥有自己的数据段、代码段和堆栈段,这就造成了进程在进行切换等操作时都需要有比较费时的上下文切换等动作。为了进一步减少处理机的空转时间支持多处理器和减少上下文切换开销,进程在演化中出现了另一个概念——线程 线程的概念 进程是系统中程序执行和资源分配的基本单位。每个进程都拥有自己的数据段、代码段和堆栈段,这就造成了进程在进行切换等操作时都需要有比较费时的上下文切换等动作。为了进一步减少处理机的空转时间支持多处理器和减少上下文切换开销,进程在演化中出现了另一个概念——线程 线程的概念 进程是系统中程序执行和资源分配的基本单位。每个进程都拥有自己的数据段、代码段和堆栈段,这就造成了进程在进行切换等操作时都需要有比较费时的上下文切换等动作。为了进一步减少处理机的空转时间支持多处理器和减少上下文切换开销,进程在演化中出现了另一个概念——线程 线程是一个进程内的基本调度单位,也可以称为轻量级进程。线程是在共享内存空间中并发的多道执行路径,它们共享一个进程的资源,如文件描述和信号处理。因此,大大减少了上下文切换的开销。 线程的概念 进程是系统中程序执行和资源分配的基本单位。每个进程都拥有自己的数据段、代码段和堆栈段,这就造成了进程在进行切换等操作时都需要有比较费时的上下文切换等动作。为了进一步减少处理机的空转时间支持多处理器和减少上下文切换开销,进程在演化中出现了另一个概念——线程 线程是一个进程内的基本调度单位,也可以称为轻量级进程。线程是在共享内存空间中并发的多道执行路径,它们共享一个进程的资源,如文件描述和信号处理。因此,大大减少了上下文切换的开销。 同进程一样,线程也将相关的变量值放在线程控制表内。一个进程可以有多个线程,也就是有多个线程控制表及堆栈寄存器,但却共享一个用户地址空间。要注意的是,由于线程共享了进程的资源和地 址空间,因此,任何线程对系统资源的操作都会给其他线程带来影响,因此,多线程中的同步就是非常重要的问题了 9.1 Linux多线程相关API Linux有多线程开发的 Pthread 库支持。 涉及多线程开发的最基本概念:线程、互斥锁、条件。 ①线程操作又分线程的创建、退出、等待。 ②互斥锁则包括 4 种操作:创建、销毁、加锁和解锁。 ③条件操作有 5 种操作:创建、销毁、触发、广播和等待。 其他的一些线程扩展概念,如信号灯等,都可以通过上面的三个基本元素的基本操作封装出来。 9.1.1 线程的创建 9.1.2线程终止 此函数用来等待一个线程的结束。这个函数是一个线程阻塞的函数,调用它的函数将一直等待到被等待的线程结束为止,当函数返回时,被等待线程的资源被收回。 9.1.2 线程终止 线程结束的两种途径:当函数结束了,调用它的线程也就结束了;另一种方式是通过函数pthread_exit 来实现。 阅读程序 写成结果 9.1.3 线程的标识 每个进程有一个进程ID,每个线程也有一个线程ID,进程ID在整个系统中是唯一的,但线程不同,线程ID只在它所属的进程环境中有效。线程ID用pthread_t数据类型来表示,实现的时候可以用一个结构来代表pthread_t数
您可能关注的文档
- 我喜欢的一个戏剧人物概要.ppt
- 我喜欢的一种美食.ppt概要.ppt
- 我和父亲主题班会概要.pptx
- 我喜欢的一首歌概要.ppt
- 我喜欢的书籍__ppt概要.ppt
- 我喜欢的动漫形象概要.pptx
- 小七鸡尾酒售卖实习总结---张三.ppt
- 我喜欢的卡通形象概要.ppt
- 我喜欢的动物概要.ppt
- 小区可视对讲方案.doc
- 某区纪委书记年度民主生活会“四个带头”个人对照检查材料.docx
- 某县纪委监委2024年工作总结及2025年工作计划.docx
- 某市场监督管理局2024年第四季度意识形态领域风险分析研判报告.docx
- 县委书记履行全面从严治党“第一责任人”职责情况汇报.docx
- 税务局党委书记2024年抓党建工作述职报告.docx
- 某市税务局副局长202X年第一季度“一岗双责”履行情况报告.docx
- 副县长在全县元旦春节前后安全生产和消防安全工作部署会议上的讲话.docx
- 某市委书记个人述职报告.docx
- 某县长在县委常委班子年度民主生活会个人对照检查材料1.docx
- 某县长在县委常委班子年度民主生活会个人对照检查材料.docx
文档评论(0)