ucosIII信號量創建

今天看了下UCOSIII的信號量,說什麼分二值信號量和計數信號量,網上也有不少例子,感覺說法都不是太準確,我驗證了一下,感覺應該這樣理解,創建信號量函數原型如下:

void  OSSemCreate (OS_SEM      *p_sem,
                   CPU_CHAR    *p_name,
                   OS_SEM_CTR   cnt,
                   OS_ERR      *p_err)

其中 OS_SEM_CTR   cnt,這一項,說什麼的都有,說什麼置1是二值信號量,大於1是計數信號量,這種說法不太好理解,應該是個初值設置,即在沒有其他任務OSSemPost的情況下OSSemPend可以先執行cnt次。

就是設置0的時候,在沒有OSSemPost的情況下OSSemPend會掛起,設置1的時候,在沒有OSSemPost的情況下OSSemPend會運行一次,同樣設置爲2的時候,OSSemPend會運行二次再掛起。那麼二值信號量是什麼玩意呢,準確的應該是指互斥量或者叫互斥信號量Mutex。如果理解有誤還請指正。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章