- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
北邮嵌入式系统设计实验实验报告.doc
嵌入式实验报告
学院:XXX 班级: XXX 学号: XXX 姓名: XXX
成员:XXX
基础知识部分
多线程实验
本章主要讲解线程的概念和线程间的同步方式。实验一主要介绍线程的概念和线程的创 建,实验二、实验三、实验四分别介绍了信号量、互斥锁、条件变量的作用和使用。
1.1线程的介绍
线程,有时被称力轻量级进程(Lightweight Process, LWP),是程序执行流的最小单元。 线程是程序中一个单一的顺序控制流程。进程内一个相对独立的、可调度的执行单元,是系 统独立调度和分派CPU的基本单位指运行屮的程序的调度单位。在单个程序屮同时运行多个 线程完成不同的工作,称为多线程。线程是允许应用程序并发执行多个任务的一种机制,是 程序运行后的任务处理单元,也是SylixOS操作系统任务调度的最小单元。在多核CPU中, 同时可以有多个线程在执行,实现真正意义上的并行处理。
线程入口函数是一个能够完成特定任务的函数,因此线程入口函数的编写上与普通函数 没有太多区别。线程的创建函数如下:
int pthread一create ( pthread_t
?thread,^
const pthread_attr_t
void
*(*start_routine)(void*)r
void
★arg)
? 创建线程失败,函数返回非0的错误代码,成功返回0 ;
thread pthreadj类型的缓冲区,保存一个线程的线程ID ;
*attr 设置线程属性,设置为NULL标识创建的新线程使用默认属性;
*(*start_routine)线程入口函数函数名
*arg 向所创建线程传入的参数
1.2信号量的概念
信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施,是可以 用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取 一个信号S; —旦该关键代码段完成了,那么该线程必须释放信号M:。其它想进入该关键代 码段的线程必须等待直到第一个线程释放信号量。
信号量是一个在进程和线程中都可以使用的同步机制。信号量类似于一个通知,某个线 程发出一个通知,等待此通知的线程收到通知后,会执行预先设置的工作。当接收通知的线 程没有收到通知前,会处于阻塞状态。
信号S可以连续发送多次,处理线程同样也会处理多次。信号实质是一个计数器,信 号量发送一次,计数值增加1,信号量每获取一次,U?数值就减1,当计数值为0时,等待 信号量线程阻塞。等待信号量过程屮,还可以设置等待时间,超过设定时间,等待信号量的 线程就不会继续等待,而是继续执行后续任务。
1.3互斥锁
在编程中,引入了对象互斥锁的概念,来保证共亨数据操作的完整性。每个对象都对应 于一个可称为互斥锁的标记,这个标记用來保证在任一时刻,只能有一个线程访问该对 象。
互斥锁是避免在同一时间共享资源被多个线程同时访问。互斥锁在使用时类似一把锁, 在访问共享资源前对其上锁,在访问完成后,将此资源解锁以便其他线程可以访问。
任何试图访问已经被上锁资源的的线程都会被阻塞,直至访问的资源被解锁。如果该资 源解锁时有多个试图访问资源的线程被阻塞,那么只有一个线程会被唤醒访W共享资源, SylixOS唤醒原则采用基于优先级的判断,优先级高的优先被唤醒。
1.4条件变量
条件变量是利用线程间共亨的全局变量进行同步的一种机制,主要包括两个动作:一个 线程等待条件变量的条件成立而挂起:另一个线程使条件成立(给出条件成立信号)。 为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起。
互斥锁能够解决多线程屮访问资源冲突的问题,其状态非常简单,只有上锁和解锁两种 状态。当线程之间有其他需要同步的条件时,使用互斥锁会十分不方便。比如将线程设罝为 等待某一个条件满足后开始工作,这个吋候使用互斥锁,只能频繁的查询该状态,这样会宝 贵的CPU资源。这时使川条件变量是一个更合适的解决方案。
条件变量能够给多个线程提供一个会合的场所,条件变量与互斥锁一起使用,允许线程 以无竞争的方式等待特定的条件发生。条件变量本身需要使用互斥锁保护,在改变条件变M 之前需要使用互斥锁对其上锁。
1.5信号量与互斥锁的区别
信号量强调的是线程(或进程)间的同步:“信号量用在多线程多任务同步的,一个线 程完成了某一个动作就通过信号y:告诉别的线程,别的线程再进行某些动作。当信号:w:为节 值信号量时,也可以完成一个资源的互斥访问。
互斥锁(又名互斥量)强调的是资源的访m互斥:互斥锁是川在多线程多任务互斥的, 一个线程占川了某一个资源,那么别的线程就无法访问,直到这个线程unlock,其他的线 程才开始可以利用这个资源。比如对企局变量的访问,有时要加锁,操作完了,在解锁。有 的时候锁和信号fi会同时使用的”
也
您可能关注的文档
- 北京市豆制品入市场厂挂钩合同与北京市道路货物运输合同合集.doc
- 北京市豆类种植采购合同与北京市道路货物运输合同合集.doc
- 北京市青年联合会教育考察团赴德国基础教育考察报告与北京市预拌混凝土采购合同合集.doc
- 北京市青年联合会教育考察团赴德国基础教育考察报告与北京市食用菌菌棒采购合同合集.doc
- 北京市预拌混凝土采购合同与北京市食用菌菌棒采购合同合集.doc
- 北京市饲料定购合同与北京戏曲艺术职业学院自查报告合集.doc
- 北京市饲料采购合同与北京戏曲艺术职业学院自查报告合集.doc
- 北京建筑工程学院混凝土学课程测验1212答案.doc
- 北京服装学院本科毕业设计工作规定.doc
- 北京林业大学监控系统程序设计期末试题库填空题.doc
- 2026年投资项目管理师之宏观经济政策考试题库300道附答案【精练】.docx
- 超星尔雅学习通《形势与政策(2025春)》章节测试附完整答案(网校专用).docx
- 超星尔雅学习通《形势与政策(2025春)》章节测试带答案(研优卷).docx
- 超星尔雅学习通《形势与政策(2026春)》章节测试题附参考答案(实用).docx
- 2026年刑法知识考试题库a4版.docx
- 2026年刑法知识考试题库标准卷.docx
- 2026福建泉州市面向华南理工大学选优生选拔引进考试题库新版.docx
- 2026年国家电网招聘之文学哲学类考试题库300道含完整答案(夺冠).docx
- 2026年法律职业资格之法律职业客观题一考试题库300道含答案【巩固】.docx
- 2026年刑法知识考试题库【精练】.docx
原创力文档


文档评论(0)