以两个串口同时发送数据为例比较异步和同步的发送性能。
同步编程
- TXD1发送时不能处理其它任务
- TXD2要在TXD1发送完成后才能开始发送
- 总发送时间为TXD1和TXD2的发送时间总和,约为150ms
异步编程
- TXD1和TXD2几乎同时开始发送,TXD2略微延后于TXD1(约4us)
- 总发送时间为max(TXD1,TXD2),即TXD1发送时间和TXD2发送时间的最大值,约为75ms
- 当有更多的外设可以并发工作时,性能提升更加明显
2019-05-10 补充
同步非阻塞能达到和异步一样的效果。借助 Protothreads 可以很简单地实现同步非阻塞。