跟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 something
osSemaphoreRelease(multiplex_id);
}
}
当信号量的数量为1时,实现的功能就跟互斥锁没有区别了
84

被折叠的 条评论
为什么被折叠?



