下载此文档

嵌入式操作系统:第9章 嵌入式Linux多线程开发.ppt


文档分类:IT计算机 | 页数:约64页 举报非法文档有奖
1/64
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/64 下载此文档
文档列表 文档介绍
第9章 嵌入式Linux多线程开发
本章教学目的及要求
了解Linux的多线程概念
掌握Linux多线程相关的API
理解Linux多线程的通信机制及常用方法
线程的概念
进程是系统中程序执行和资源分配的基本单位。每个进程退出、等待。
②互斥锁则包括 4 种操作:创建、销毁、加锁和解锁。
③条件操作有 5 种操作:创建、销毁、触发、广播和等待。
其他的一些线程扩展概念,如信号灯等,都可以通过上面的三个基本元素的基本操作封装出来。
线程访问控制
解决的问题:
由于线程共享进程的资源和地址空间,因此在对这些资源进行操作时,必须考虑到线程资源访问的惟一性问题。
主要介绍POSIX (可移植性操作系统接口 )中线程同步的方法,主要有互斥锁和信号量的方式。


(1)说明
mutex 是通过加锁来控制对共享资源的存取的一种简单方法。这个互斥量只有两种状态,也就是上锁和解锁,可以把互斥锁看作某种意义上的全局变量。
1.mutex 互斥量线程控制
(1)说明
mutex 是通过加锁来控制对共享资源的存取的一种简单方法。这个互斥量只有两种状态,也就是上锁和解锁,可以把互斥锁看作某种意义上的全局变量。
在同一时刻只能有一个线程掌握某个互斥量上的锁,拥有上锁状态的线程能够对共享资源进行操作。若其他线程希望上锁一个已经上锁了的互斥量,则该线程就会挂起,直到上锁的线程释放掉互斥量上的锁为止。可以说,这把互斥锁使得各个线程按序操作共享资源。
1.mutex 互斥量线程控制
(1)说明
mutex 是通过加锁来控制对共享资源的存取的一种简单方法。这个互斥量只有两种状态,也就是上锁和解锁,可以把互斥锁看作某种意义上的全局变量。
在同一时刻只能有一个线程掌握某个互斥量上的锁,拥有上锁状态的线程能够对共享资源进行操作。若其他线程希望上锁一个已经上锁了的互斥量,则该线程就会挂起,直到上锁的线程释放掉互斥量上的锁为止。可以说,这把互斥锁使得各个线程按序操作共享资源。
1.mutex 互斥量线程控制
互斥锁的操作主要包括以下几个步骤
互斥锁初始化: pthread_mutex_init
互斥锁上锁: pthread_mutex_lock
互斥锁判断上锁: pthread_mutex_trylock
互斥锁解锁: pthread_mutex_unlock
消除互斥锁: pthread_mutex_destroy
(2)函数格式
互斥锁用pthread_mutex_t数据类型来表示,在使用互斥锁之前,必须首先对它进行初始化,通过调用pthread_mutex_init函数可以进行初始化静态和动态分配的互斥锁
pthread_mutex_init函数用于初始化互斥锁。
使用默认值初始化时为NULL
对共享资源的访问, 要对互斥量进行加锁,如果互斥量已经上了锁,调用线程会阻塞,直到互斥量被解锁。在完成了对共享资源的访问后,要对互斥量进行解锁。
int pthread_mutex_trylock(pthread_mutex_t *mutex);
函数参数:参数mutex是互斥量
返回值:成功则返回0,出错则返回错误编号
函数说明:trylock函数,这个函数是非阻塞调用模式,也就是说,如果互斥量没被锁住,trylock函数将把互斥量加锁,并获得对共享资源的访问权限;如果互斥量被锁住了,trylock函数将不会阻塞等待而直接返回EBUSY,表示共享资源处于忙状态。
互斥量解锁函数
#include <>
int pthread_mutex_unlock(pthread_mutex_t *mutex);
函数参数:参数mutex是互斥量
返回值:成功则返回0,出错则返回错误编号
对互斥量解锁,需要调用pthread_mutex_unlock.
(3)使用实例
main线程与thread_function交替运行,都可以对run_now进行操作。
代表共享资源
访问run_now的function线程函数
创建一个线程
主线程执行的操作
主线程执行的操作
等待子线程结束以释放资源
main线程和function线程交替运行,两者都可以实现对run_now的操作。如何实现对它的锁定?
为互斥量加锁
代表共享资源
访问run_now的function线程函数
定义互斥量
main都干了什么?
初始化互斥量
创建新线程
对互斥量上锁,上锁成功显示main lock
main都干了什么?
执行循环操作
给互斥变量解锁,显示解锁成功
收回互斥变量资源
等待线程结束,释放资源
“main都干了什么?”的简化版

嵌入式操作系统:第9章 嵌入式Linux多线程开发 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数64
  • 收藏数0 收藏
  • 顶次数0
  • 上传人窝窝爱蛋蛋
  • 文件大小2 MB
  • 时间2022-04-26
最近更新