CoOS使用教程——互斥量
来源:互联网 发布:天行加速器 for mac 编辑:程序博客网 时间:2024/05/22 03:13
在介绍互斥量之前,先说说什么是临界资源。
最经典的临界资源就是打印机,在你同时让打印机打印两分文档的时候,会弹出一个窗口,上面列出打印队列。
这就是说,打印机只有一个,它无法同时打印两个文档,只能排队,一个个地打。
如果同时打印的话,会出错,这不是用户想要的结果。
同样的,在单片机里面,串口1,也是个临界资源,为了不让它出错,必须使用互斥量。
所谓互斥,就是互相排斥,任务A在使用串口1的时候,任务B不能使用,反之亦然。
使用互斥量之后,效果如下图所示。
把第16、23、34、39、46、51行都注释掉,不使用互斥量,效果如下图所示。
显然,不使用互斥量会让串口输出错误的信息。
1、CoCreateMutex(),创建一个互斥量。
OS_MutexID CoCreateMutex(void);
如果成为创建一个互斥量,会返回一个OS_MutexID变量;创建失败的话,返回-1。
2、CoEnterMutexSection(),进入临界段。
StatusType CoEnterMutexSection(OS_MutexID mutexID);
3、CoLeaveMutexSection(),退出临界段。
StatusType CoLeaveMutexSection(OS_MutexID mutexID);
4、其实互斥量,就是在嵌入式常常说的“锁”,进入临界段对应“加锁”,退出临界段对应“解锁”。
而在linux驱动,还有自旋锁和睡眠锁两种,对加锁和解锁操作不当的话,也极易让任务变得不稳定,所以使用前请注意一下。
0 0
- CoOS使用教程——互斥量
- CoOS使用教程——信号量
- CoOS使用教程——事件标志
- CoOS使用教程——消息邮箱
- CoOS使用教程——消息队列
- CoOS使用教程——软件定时器
- CoOS使用教程——第一个工程
- CoOS使用教程——任务的状态
- CoOS使用教程——中断、裁剪、移植
- Jena使用教程—RDF Model使用
- NBearV3——VsPlugin使用教程
- NBearV3——VsPlugin使用教程
- PowerDesigner使用教程 —— 概念数据模型
- PowerDesigner使用教程 —— 概念数据模型
- PowerDesigner使用教程 —— 概念数据模型
- PowerDesigner使用教程 —— 概念数据模型
- PowerDesigner使用教程 —— 概念数据模型
- PowerDesigner使用教程 —— 概念数据模型
- 0026分治法应用之求最大最小值
- Light oj 1047 - Neighbor House (简单dp)
- 文件管理
- 探索高效jQuery的奥秘
- 线性表之顺序表
- CoOS使用教程——互斥量
- 自己用java写了一款日志查找分析工具
- Infopath提示表单已经存在,怎么破?
- iOS 时间格式化
- 47.Android 自定义PopupWindow技巧
- 入职两月半的工作业务总结
- <LeetCode OJ> 20. Valid Parentheses
- ChinaUnix中fastdfs论坛资料之FastDFS FAQ
- codeforces 424D. Biathlon Track(dp+ brute force)