信号量 事件标志和消息队列分别应用于什么场景(反正我学的时候有点闹不清,现在总结一下):
信号量和事件标志用于任务同步。详细来说,这个功能可以替代以前裸机中你打一个标记的功能,比如使用了一个定时器,500ms到的时候,需要扫描一次键盘,为了尽快处理完中断,需要打一个标记,在主函数中做键盘扫描的具体实现。在这期间,主函数要一直查询标记是否被置位,一旦发现标记置位,就开始做处理。这种通信方式被称为同步。ucos中信号量和事件标志都可以用作任务间同步,或任务与ISR之间的同步。
区别在于:信号量用于单个任务间或与ISR间的同步
事件标志组在任务需要与多个事件的发生产生同步时使用
消息队列用于任务间通信。举例来说,串口中断的字符处理,这时候需要把串口的字符给传出去,信号量仅仅能通知给任务说这里有你感兴趣的数据过来了,你可以处理了,消息队列能进一步的说明过来了什么数据(严谨一点说,实际上是指向数据的指针)。