掌控板micropython模式下MQTT的“阻塞”与“非阻塞”讲解
2023-12-0112.1万
AI 快速预览详细 收起
本文详细讲解了掌控板Micropython环境下MQTT通信的阻塞与非阻塞模式。阻塞模式会在接收到MQTT消息时暂停代码执行,直到消息处理完毕;而非阻塞模式则会检查是否有新消息到达,但不会暂停代码执行。通过示例程序展示了两种模式的应用场景和注意事项,帮助开发者根据具体需求选择合适的模式,确保代码执行顺畅。
等待主题消息 以阻塞/非阻塞模式 详解

概念解析
阻塞:用于在接收到MQTT消息时阻塞代码的执行,直到收到消息为止。它会阻塞代码执行,直到收到消息后才会继续执行后续操作。
非阻塞:用于检查是否有新的MQTT消息到达,但不会阻塞代码的执行。它会检查是否有新的消息到达,如果有则处理该消息,如果没有则立即返回,允许代码继续执行其他操作。
适用情况
阻塞:如果代码在接收到MQTT消息时需要立即做出响应,并且不需要同时执行其他操作时,需要用到阻塞模式。如下图程序所示:

非阻塞:如果代码需要能够同时处理MQTT消息和其他操作,需要用到非阻塞模式。如下图程序所示:

总结:“阻塞模式”用于在接收到MQTT消息时阻塞代码的执行,而“非阻塞模式”用于检查是否有新的消息到达,但不会阻塞代码的执行。可以根据具体的需求选择适合的模式来处理MQTT消息。如果只是发送消息到物联网平台,无需响应,可以不用设置模式。
注意:以上程序截图只是为了方便理解,不是最规范的写法。因为在使用“阻塞模式”时,需要确保没有其他阻塞代码或无限循环,否则可能会导致代码无法继续执行。
|