多任务通信下可能的死锁问题及总结
来源:互联网 发布:js jsonarray 长度 编辑:程序博客网 时间:2024/06/08 18:34
首先介绍一篇VxWorks下多任务通信机制的文章:
http://www.witech.com.cn/news/Article_Show.asp?ArticleID=231
以前遇到死锁问题,仅局限于查找信号量嵌套,总是将死锁局限于多信号量的使用,而往往忽视了最根本的问题,死锁产生的原因在于资源,资源短缺,资源互斥。因为这个原因,在分析死锁时也应该考虑信号量与管道,消息队列之间可能因为争夺资源而导致的阻塞。
然后对信号量做个总结:
1,概述
VxWorks中提供了三种信号量,二进制信号量(semBCreate),互斥信号量(semMCreate),和计数信号量(semCCreate)。那么这三种信号量分别有什么特点呢?
二进制信号量:速度最快,最常用,是完成互斥,同步操作的最佳方式;
互斥信号量:对二进制信号量在互斥上进行优化,具有优先级继承,删除保护和递归访问的特性;
计数信号量:可记录semGive()的次数,可监视同一资源上的多个实例。
信号量操作的常用函数:
semTake();
semGive();
semFlush();将所有等待该信号量的任务唤醒;但并不会影响该二进制信号量所处的状态,它只是清空了所有阻塞在该信号量上的任务队列。
中断服务程序不能调用semGive函数。
2,二进制信号量使用说明
二进制信号量是用于互斥还是同步与其初始状态关系密切。互斥操作一般将其初始化为可用,而同步操作则将其初始化为不可用。
- 多任务通信下可能的死锁问题及总结
- linux下crontab 任务不执行的可能原因总结
- Linux下安装mysql步骤及可能出现的问题
- 改正 抢占式camera的可能带来死锁问题
- 多个线程执行多个任务,解决该问题的死锁问题
- Linux下死锁的必要条件及如何避免死锁
- linux下socket通信代码的开发及总结---UDP
- 线程死锁的可能情况
- Linux下的死锁及产生条件
- 总结线上遇到的MySQL死锁问题
- 分析及解决SQLServer的死锁问题
- JavaSE第一百零四讲:哲学家就餐问题、死锁与使用wait及notify方法实现线程之间的相互通信
- 死锁及处理问题
- 可能导致Oozie定时任务执行不准确的问题
- 修改用户名 及 可能出现的问题
- RedHat9下安装gcc时可能遇到的问题及解决
- MyEclipse下实现邮箱收发功能可能遇到的问题及解决办法
- Ubuntu下安装和配置Node.JS及可能遇到的问题
- IBM Directory Server 6.0复制配置说明
- fcitx自定义翻页键
- Windows Mobile,DMProcessConfigXML 使用实例
- url传递中文的解决方案(转)
- 关于icoffer网络保险箱
- 多任务通信下可能的死锁问题及总结
- SQL Server 判断列是否存在
- 改变IT世界的11大Apache开源技术
- Makefile详解(超级好)
- linux下的so、o、lo、a、la文件有什么区别?
- 桌面级文件信息安全
- Linux2.6.24下的USB HOST移植
- linux gdb 调试实例
- jsFiddle:在线Shell编辑器