RTOS接口-Semaphores
跟Linux下面的信号量的PV操作是一个思想
接口
/*Create and Initialize a Semaphore object.*/
osSemaphoreId_t osSemaphoreNew (uint32_t max_count, uint32_t initial_count, const osSemaphoreAttr_t *attr)/*Get name of a Semaphore object.*/
const char * osSemaphoreGetName (osSemaphoreId_t semaphore_id)/*Acquire a Semaphore token or timeout if no tokens are available.*/
osStatus_t osSemaphoreAcquire (osSemaphoreId_t semaphore_id, uint32_t timeout)/*Release a Semaphore token up to the initial maximum count.*/
osStatus_t osSemaphoreRelease (osSemaphoreId_t semaphore_id)/*Get current Semaphore token count.*/
uint32_t osSemaphoreGetCount (osSemaphoreId_t semaphore_id)/*Delete a Semaphore object.*/
osStatus_t osSemaphoreDelete (osSemaphoreId_t semaphore_id)
代码举例
osSemaphoreId_t multiplex_id;void thread_n (void) {multiplex_id = osSemaphoreNew(3U, 3U, NULL);while(1) {osSemaphoreAcquire(multiplex_id, osWaitForever);// do somethingosSemaphoreRelease(multiplex_id);}
}
当信号量的数量为1时,实现的功能就跟互斥锁没有区别了