大鹏哥 发表于 2023-12-1 19:27:27

掌控板micropython模式下MQTT的“阻塞”与“非阻塞”讲解

## 等待主题消息以阻塞/非阻塞模式详解
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202312/01/190634d28iey28lch7lael.png)
## 概念解析
### 阻塞:用于在接收到MQTT消息时阻塞代码的执行,直到收到消息为止。它会阻塞代码执行,直到收到消息后才会继续执行后续操作。
### 非阻塞:用于检查是否有新的MQTT消息到达,但不会阻塞代码的执行。它会检查是否有新的消息到达,如果有则处理该消息,如果没有则立即返回,允许代码继续执行其他操作。
## 适用情况
### 阻塞:如果代码在接收到MQTT消息时需要立即做出响应,并且不需要同时执行其他操作时,需要用到阻塞模式。如下图程序所示:
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202312/01/191603bnc7ktta70knta7t.png)
### 非阻塞:如果代码需要能够同时处理MQTT消息和其他操作,需要用到非阻塞模式。如下图程序所示:
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202312/01/191713s6bhrvsbxpppix0h.png)

### 总结:“阻塞模式”用于在接收到MQTT消息时阻塞代码的执行,而“非阻塞模式”用于检查是否有新的消息到达,但不会阻塞代码的执行。可以根据具体的需求选择适合的模式来处理MQTT消息。如果只是发送消息到物联网平台,无需响应,可以不用设置模式。

### 注意:以上程序截图只是为了方便理解,不是最规范的写法。因为在使用“阻塞模式”时,需要确保没有其他阻塞代码或无限循环,否则可能会导致代码无法继续执行。
页: [1]
查看完整版本: 掌控板micropython模式下MQTT的“阻塞”与“非阻塞”讲解