既在一个任务里用
OSSemPend(Signal,0,&err);
而在另一个任务里用OSSemPost(Signal);
我不明白其中的原理,不是成对使用的吗?
在一个任务里
OSSemPend(Signal,0,&err);
//自己的代码
OSSemPost(Signal);
请高手们指点.我迷惑了好几天了.
12 个解决方案
#1
有什么问题,就是这样用
#2
你指的成对是什么?这两个函数一对一使用?
实际应用中会一对多啊,可以在多处post,这点很好理解,
至于是否可以在多处pend忘了,应该可以吧,不同的任务通过优先级来获取执行,以前简单研究过。
实际应用中会一对多啊,可以在多处post,这点很好理解,
至于是否可以在多处pend忘了,应该可以吧,不同的任务通过优先级来获取执行,以前简单研究过。
#3
一个是产生信号量,一个是消耗信号量,
其中的第二个任务挂起等待,直到第一个任务产生信号量,这时第二个任务就消耗掉这个信号量,继续运行。
其中的第二个任务挂起等待,直到第一个任务产生信号量,这时第二个任务就消耗掉这个信号量,继续运行。
#4
刚刚在偶的资源里共享了一个ucos的信号量学习文档,可以看看
#5
学习了,正在学习,困惑中!!!
#6
楼主的用法感觉像是将信号量当FLAG用,满足就下,不满足就走。
#7
mask
#8
2中使用方法都对
情况不同而已
1、是2个任务 一个任务等待另1个或几个任务完成某件事
2、是临界区资源保护,要成对使用的
自己理解!!
情况不同而已
1、是2个任务 一个任务等待另1个或几个任务完成某件事
2、是临界区资源保护,要成对使用的
自己理解!!
#9
忘记了2年前搞的记得当时有个是阻塞型的,pend一个消息后另个任务会阻塞等待他,不知道记得清楚不!
#10
OSSemPend 是等待信号 ,可以等待当前的任务发出的信号,也可以等待其他任务发出信号
SSemPost 同理,但OSSemPend 一般不在中断中使用,OSSemPend则可以
SSemPost 同理,但OSSemPend 一般不在中断中使用,OSSemPend则可以
#11
“既在一个任务里用
OSSemPend(Signal,0,&err);
而在另一个任务里用OSSemPost(Signal);
我不明白其中的原理,不是成对使用的吗?
在一个任务里
OSSemPend(Signal,0,&err);
//自己的代码
OSSemPost(Signal); ”
OSSemPend与OSSemPost是成对使用的,但是可以在不同的任务中使用。
或许他们都用了同一个临界区,从OSSemPend起使用某种资源,直到另外一个任务释放某种资源。
你的写法也有,要具体问题具体分析。
OSSemPend(Signal,0,&err);
而在另一个任务里用OSSemPost(Signal);
我不明白其中的原理,不是成对使用的吗?
在一个任务里
OSSemPend(Signal,0,&err);
//自己的代码
OSSemPost(Signal); ”
OSSemPend与OSSemPost是成对使用的,但是可以在不同的任务中使用。
或许他们都用了同一个临界区,从OSSemPend起使用某种资源,直到另外一个任务释放某种资源。
你的写法也有,要具体问题具体分析。
#12
生产与消费的关系,想消费得先生产,生产过多并不影响你消费,但是会浪费造成
#1
有什么问题,就是这样用
#2
你指的成对是什么?这两个函数一对一使用?
实际应用中会一对多啊,可以在多处post,这点很好理解,
至于是否可以在多处pend忘了,应该可以吧,不同的任务通过优先级来获取执行,以前简单研究过。
实际应用中会一对多啊,可以在多处post,这点很好理解,
至于是否可以在多处pend忘了,应该可以吧,不同的任务通过优先级来获取执行,以前简单研究过。
#3
一个是产生信号量,一个是消耗信号量,
其中的第二个任务挂起等待,直到第一个任务产生信号量,这时第二个任务就消耗掉这个信号量,继续运行。
其中的第二个任务挂起等待,直到第一个任务产生信号量,这时第二个任务就消耗掉这个信号量,继续运行。
#4
刚刚在偶的资源里共享了一个ucos的信号量学习文档,可以看看
#5
学习了,正在学习,困惑中!!!
#6
楼主的用法感觉像是将信号量当FLAG用,满足就下,不满足就走。
#7
mask
#8
2中使用方法都对
情况不同而已
1、是2个任务 一个任务等待另1个或几个任务完成某件事
2、是临界区资源保护,要成对使用的
自己理解!!
情况不同而已
1、是2个任务 一个任务等待另1个或几个任务完成某件事
2、是临界区资源保护,要成对使用的
自己理解!!
#9
忘记了2年前搞的记得当时有个是阻塞型的,pend一个消息后另个任务会阻塞等待他,不知道记得清楚不!
#10
OSSemPend 是等待信号 ,可以等待当前的任务发出的信号,也可以等待其他任务发出信号
SSemPost 同理,但OSSemPend 一般不在中断中使用,OSSemPend则可以
SSemPost 同理,但OSSemPend 一般不在中断中使用,OSSemPend则可以
#11
“既在一个任务里用
OSSemPend(Signal,0,&err);
而在另一个任务里用OSSemPost(Signal);
我不明白其中的原理,不是成对使用的吗?
在一个任务里
OSSemPend(Signal,0,&err);
//自己的代码
OSSemPost(Signal); ”
OSSemPend与OSSemPost是成对使用的,但是可以在不同的任务中使用。
或许他们都用了同一个临界区,从OSSemPend起使用某种资源,直到另外一个任务释放某种资源。
你的写法也有,要具体问题具体分析。
OSSemPend(Signal,0,&err);
而在另一个任务里用OSSemPost(Signal);
我不明白其中的原理,不是成对使用的吗?
在一个任务里
OSSemPend(Signal,0,&err);
//自己的代码
OSSemPost(Signal); ”
OSSemPend与OSSemPost是成对使用的,但是可以在不同的任务中使用。
或许他们都用了同一个临界区,从OSSemPend起使用某种资源,直到另外一个任务释放某种资源。
你的写法也有,要具体问题具体分析。
#12
生产与消费的关系,想消费得先生产,生产过多并不影响你消费,但是会浪费造成