线程间通信
线程在执行的过程中免不了要与其他线程进行通信,如线程 A 处理完毕某个事件后通知线程 B 事件的处理结果,线程 B 得到事件的处理结果后继续运行。
线程间通信主要有以下几种类型:
- 互斥型通信:共享资源需要独占访问,可以使用信号量、互斥量进行互斥型通信。
- 通知型通信:上述的线程 A 通知线程 B,可以用信号量、事件集、条件变量进行通知型通信。
- 消息型通信:某线程或中断服务程序只负责采集数据,但并不直接加工数据,而是将数据传递给另一线程进行数据加工,可以使用消息队列进行消息型通信。
SylixOS 提供了丰富的线程间通信手段,如下表所示。这些通信手段满足嵌入式系统软件开发的线程间通信需求。
线程间通信手段 | 用途 |
---|---|
二进制型信号量 | 互斥型通信、通知型通信 |
记数型信号量 | 通知型通信 |
互斥型信号量 | 互斥型通信 |
事件集 | 通知型通信 |
条件变量 | 通知型通信 |
消息队列 | 消息型通信 |