16.1-uC/OS-III同步 (任务内建信号量)
1.经常通过发送信号量实现同步。每个任务都有内建的信号量,通
过任务内建的信号量不仅可以简化信号量通信的代码而且更加有效。
与任务内建的信号量相关的函数都是以 OSTaskSem???()为前缀
的。相关的代码都在OS_TASK.C中。
函数名 | 功能 |
OSTaskSemPend() | 等待一个任务信号量 |
OSTaskSemPendAbort() | 取消等待 |
OSTaskSemPost() | 发送信号量给任务 |
OSTaskSemSet() | 设置信号量计数值 |
2.挂起(等待)任务信号量
当任务被创建时,也会内建一个信号量,信号量计数值初始化为0。
3.提交(标记)任务信号量
ISR或任务通过调用 OSTaskSemPost()提交任务信号量 。
4.双向同步
两个任务间可以用两个信号量实现双向同步。任务与ISR间不能双向同步,
因为ISR中不能等待信号量( ISR中不能有阻塞呼叫)。
双向同步可以由两个外部信号量实现,但使用任务信号量会更加简单。