ucos 建立信号量OSSemCreate什么时候计数初值用1,什么时候用0?
OSSemPost 和OSSemPend是成对出现的,在程序OSSemPost 尚未运行到的时候,在等待Sem的 OSSemPend是会把当前的任务挂起,直到另外一个任务的OSSemPost 运行完毕都得到Sem。但是可以通过改变OSSemCreate(x)里面的值x改变这种局面,当x不为0时,OSSemPend会马上得到Sem继续运行当前任务至结束,并将x的数值减一,...
ucos 建立信号量OSSemCreate什么时候计数初值用1,什么时候用0?
哥哥来解释给你听听吧,当 pend请求发出的时候信号量的值减1,当post的时候信号量的值加1,信号量的值0跟1分别是用来同步跟互斥的,什么是同步,什么是互斥呢。。。假设你把信号量的值设为0,有A,B连个任务,当A发出pend请求的时候它发现此事的信号量值为0就把它减1然后挂起等待,等待到什么时...
ucos 建立信号量OSSemCreate什么时候计数初值用1,什么时候用0
计数初值用0,用于任务间的通信,另一个任务运行过程中得到了结果然后发送信号量,就会将计数值+1,这个时候请求信号量的任务就能执行了。总的来说,计数初值大于0,用于共享资源。计数初值为0,用于任务间通信。当然也有其他情况。以上为个人理解。