机电电子工程专业硕士,机械设计制造及其自动化/计算机双学士,高级工程师
具有丰富的从业、管理经验,曾在机电工程公司,资深设计代理公司工作。历任组织、经理等岗位,同时具有深厚的理论基础和项目项目研发经历。...
机械电子工程,嵌入式系统专家,高级工程师
嵌入式项目开发,ARM,Freescale,Infilion等系列单片机系统开发,DSP嵌入式系统开发,FPGA系统开发,项目经验丰富。
...
对VxWorks中信号量的几点分析
1 计数信号量可以同时被多少个任务申请使用?
Sem = semCCreate(SEM_Q_PRIORITY, Count);
参数Count并不是表示这个信号量最多能够被Count个任务同时使用,而是表示在此计数信号量创建之后,在不释放这个信号量的情况下最多可以申请Count次这个信号量。如果Count=0,那这个信号量创建之后是不能申请的。它必须先释放,然后才能申请,释放多少个,就可以申请多少个(唯一的限制是不能超出函数semCCreate第二个参数的表示范围);
2 二进制信号量如何用于互斥和同步?
Sem = semBCreate(SEM_Q_PRIORITY, SEM_ FULL); ①
Sem = semBCreate(SEM_Q_PRIORITY, SEM_ EMPTY); ②
函数semBCreate的第二个参数是很重要的,它表示这个信号量在创建之初是否能立即被申请到。如果创建时参数是SEM_ FULL,就表示这个参数在创建之后就可以申请,一旦申请到,其它的任务就不能得到这个信号量,这就是互斥的过程;如果创建时参数是SEM_ EMPTY,就表示这个参数在创建之后是不可以申请的。要是任务1想申请这个信号量,就被停在申请的地方等待,等到任务2释放这个信号量时,任务1就可以立刻得到这个信号量(只要没有更高优先级的任务也等待这个信号量或者更高优先级的任务准备就绪),那么任务1就可以执行了。这就是互斥的过程,如图1(任务1的优先级高于任务2)。
图 1 任务间的同步
免责声明/版权申明 Passiontech
所有文章为网上搜集或私下交流学习之用,任何涉及商业盈利目的均不得使用,否则产生的一切后果由您自己承担!
本站仅仅提供一个观摩学习的环境,将不对任何资源负法律责任。所有资源请在下载后24小时内删除。
联系我们 | 关于我们
Copyright 2003-2013 版权:上海葩星信息科技有限公司
网站备案号:沪ICP备10202509-2
华东:上海市徐汇区零陵路585号19楼F座
华北:北京市朝阳区SOHO现代城5号楼1702室
华中:湖北武汉市东湖开发区SBI创业街东创仕佳南4-302
华南:广州市海珠区新港西路156号
电话:400-878-1895 邮箱: sales@51LM.cn
感谢您的关注,当前客服人员不在线,请填写一下您的信息,我们会尽快和您联系。