Nuttx之互斥锁和信号量
2016-07-30 19:31
316 查看
Nuttx之互斥锁和信号量
这些天开始真正的接触嵌入式的操作系统了,慢慢地激动,但是激动之余,还是有些忐忑啊,虽然是来实习的,但是自己的能力也是想提高些的,所以就静下心来,仔细的研究人家源代码,看书,查函数API。从中学到的点东西,记录下来,方便自己,也方便需要的人。我记录的通俗易懂,因为我看到浅。先说互斥锁
使用互斥锁的流程如下:
声明一个互斥锁:
pthread_mutex_t *name;
初始化互斥锁:
int pthread_mutex_init(pthread_mutex_t *restrict mutex,const pthread_mutexattr_t *restrict attr);
const pthread_mutexattr_t *restrict attr一般如果没有特殊要求可以取NULL,
接下来就是使用锁了,分两大部分:
加锁、
int pthread_mutex_lock(pthread_mutex_t *mutex);
加锁后,别人就不可以访问这些临界变量了。
解锁、
int pthread_mutex_unlock(pthread_mutex_t *mutex);
解锁后,别人就可以访问这些临界变量了。
再说信号量
信号量好像要和互斥锁一起用,不知道为什么?因为信号量相关的API有用到互斥锁的。
声明信号量:
pthread_cond_t *__cond
初始化信号量:
extern int pthread_cond_init __P ((pthread_cond_t *__cond,__const pthread_condattr_t *__cond_attr));
发送信号量:
pthread_cond_signal(pthread_cond_t *cond);
等待信号量:
pthread_cond_wait(&cond, &mut);
重要的是:
等待信号和发送信号之前最好都要上锁,等待信号之后,发送信号之后,也要解锁,因为上锁和解锁是成对出现的。
eg1:
pthread_mutex_lock(&mut);
pthread_cond_signal(pthread_cond_t *cond);
pthread_mutex_unlock(&mut);
特别的与pthread_cond_signal(pthread_cond_t *cond);类似的是
pthread_cond_broadcast (pthread_cond_t *cond);
eg2:
pthread_mutex_lock(&mut);
pthread_cond_wait(pthread_cond_t *cond);
pthread_mutex_unlock(&mut);
今天先记录这么点了。后续学点东西,还是会记录的。
相关文章推荐
- 应用领航:盘点那些年我们一起追过的OS
- 无奇不有!盘点各国自己开发的操作系统
- 可自定义oem的萝卜家园 Ghost XP 新春装机版 V200801 下载
- C#实现判断操作系统是否为Win8以上版本
- js获取本机操作系统类型的两种方法
- Linux操作系统添加新硬盘方法
- Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码
- java如何获取本地操作系统进程列表
- Linux rdesktop操作系统下远程登录Windows XP桌面
- 32位操作系统认出超出4G内存的方法
- Linux rpm tar 操作系统下软件的安装与卸载方法
- JavaScript 获取用户客户端操作系统版本
- jsp 获取客户端的浏览器和操作系统信息
- Windows 操作系统的安全设置
- php判断当前操作系统类型
- PHP获取用户的浏览器与操作系统信息的代码
- Perl操作系统环境变量的脚本代码
- javascript获取本机操作系统类型的方法
- 封装好的js判断操作系统与浏览器代码分享
- Android操作系统介绍之11种传感器