Asynchronous vs synchronous client applications(MQTT)
想查看英文原文的请点击原文网址。在上两篇翻译中,Homejim我给大家分别翻译了同步客户端应用程序和异步客户端应用程序。本人对这两个的区别也有困惑,因此将paho下的这个比较也看了一下。还是那句话,水平有限,如有翻译不当之处,欢迎指正。
异步客户端应用程序 VS 同步客户端应用程序
客户端库支持两种操作模式,称为同步模式和异步模式。如果你的应用程序调用了MQTTClient_setCallbacks(),则客户端将会进入异步模式,否则会以同步模式运行。
同步模式下,客户端应用程序运行在单个线程上。信息的发布使用MQTTClient_publish()和MQTTClient_publishMessage()函数。为了确定Qos1和Qos2(详见Quality of service)的信息已经成功传递,应用程序必须调用MQTTClient_waitForCompletion()这个函数。一个展示同步发布的例子可查看Synchronous publication example。同步模式下接收信息使用 MQTTClient_receive()函数,客户端应用程序必须相对频繁地调用 MQTTClient_receive()或MQTTClient_yield(),以便允许(执行)确认和保持与服务器的网络连接的 MQTT "ping"这些操作。
异步模式下,客户端应用程序运行在若干个线程上。如同同步模式,(异步模式中)主程序调用客户端库中的函数来发布和订阅,而在在后台进行握手和维持网络连接这些操作。客户端应用程序通过调用 MQTTClient_setCallbacks()( (详情请见MQTTClient_messageArrived(), MQTTClient_connectionLost()和 MQTTClient_deliveryComplete()))来使用库进行回调注册而获得状态通知和消息接收。然而, 这个 API 不是线程安全的-不可能从多个线程调用它而不进行同步。你可以使用MQTTAsync API来完成此操作。
Asynchronous vs synchronous client applications(MQTT)的更多相关文章
- 全网最详细的Windows系统里Oracle 11g R2 Client客户端(64bit)安装后的初步使用(图文详解)
不多说,直接上干货! 前期博客 全网最详细的Windows系统里Oracle 11g R2 Client(64bit)的下载与安装(图文详解) 命令行方式测试安装是否成功 1) 打开服务(cmd— ...
- BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第9章节--client对象模型和REST APIs概览 client对象模型(CSOM)基础
BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第9章节--client对象模型和REST APIs概览 client对象模型(CSOM)基础 在SP2 ...
- React Native入门——布局实践:开发京东client首页(一)
有了一些对React Native开发的简单了解,让我们从实战出发.一起来构建一个简单的京东client. 这个client是仿照之前版本号的京东client开发的Android版应用,来源于CSDN ...
- 漫谈 Google 的 Native Client 技术(一)---- 历史动力篇(Web 本地计算发展史)
转自:http://hzx5.blog.163.com/blog/static/40744388201172522313463/ 漫谈 Google 的 Native Client 技术(一)---- ...
- ODCA最佳实践翻译:Architecting Cloud-Aware Applications (一)
Architecting Cloud-Aware Applications ** ODCA(Open Data Center Alliance)最佳实践 ** MagicBowen(e.bowen.w ...
- Mina airQQ聊天 client篇(三)
开发工具 (FlashBuilder4.7) 程序类型(Adobe Air) Flex Air做的桌面程序,效果还挺好看的.最主要是Socket这一块,它也是异步的,而且在Flex中的事件机制比較强大 ...
- No fallback instance of type class found for feign client user-service(转)
1.错误日志 在 feign 开启熔断,配置 fallback 类,实现当前接口的实现类时,报错信息如下: Error starting ApplicationContext. To display ...
- React Native布局实践:开发京东client首页(三)——轮播图的实现
上篇文章中,我们一起构建了京东client的TabBar.在本文中.将继续向大家介绍京东client首页轮播图及其下发功能button的开发方法,如今就让我们開始吧! 1.相关控件调研 眼下在Gith ...
- MQTT Client library for C (MQTT客户端C语言库-paho)
原文:http://www.eclipse.org/paho/files/mqttdoc/MQTTClient/html/index.html 来自我的CSDN博客 最近在使用Paho的MQTT客 ...
随机推荐
- Spring的69个知识点
目录 Spring 概述 依赖注入 Spring beans Spring注解 Spring数据访问 Spring面向切面编程(AOP) Spring MVC Spring 概述 1. 什么是spri ...
- 【架构研习】欲善其事先利其器-Robot Framework实战演练之框架的选择
(原创文章,转载请注明出处.) 之前有提到过,自己曾基于公司业务系统从无到有码过一套测试框架,但由于开发时的思想同时受限于公司业务及框架的适用性上,导致最终虽然框架可完美支持业务,但在易用性.兼容性及 ...
- python 常用库整理
python 常用库整理 GUI 图形界面 Tkinter: Tkinter wxPython:wxPython pyGTK:PyGTK pyQt:pyQt WEB框架 django:django w ...
- 安装VisualSVN Server时候,端口号冲突
今天在本机安装VisualSVN Server 时,发现https默认端口号:443被占用了, 于是到cmd下面执行 netstat -ano命令发现是pid:4276的进程在试用, 打开任务管理里一 ...
- 《用Java写一个通用的服务器程序》01 综述
最近一两年用C++写了好几个基于TCP通信类型程序,都是写一个小型的服务器,监听请求,解析自定义的协议,处理请求,返回结果.每次写新程序时都把老代码拿来,修改一下协议解析部分和业务处理部分,然后就一个 ...
- head first python菜鸟学习笔记(第四章)
1,p124,错误:NameError: name 'print_lol' is not defined 要想文件内如图显示,需要把调用BIF print()改为调用第二章的nester模块中的pri ...
- 十三、Hadoop学习笔记————Hive安装先决条件以及部署
内嵌模式,存储于本地的Derby数据库中,只支持单用户 本地模式,支持多用户多会话,例如存入mysql 下载解压hive后,进到conf路径,将模板拷贝 出现该错误表示权限不够 该目录未找到 新建一个 ...
- 深入了解Android蓝牙Bluetooth——《基础篇》
什么是蓝牙? 也可以说是蓝牙技术.所谓蓝牙(Bluetooth)技术,实际上是一种短距离无线电技术,是由爱立信公司公司发明的.利用"蓝牙"技术,能够有效地简化掌上电脑.笔记本电 ...
- spring cloud feign不支持@RequestBody+ RequestMethod.GET,报错
1.问题梳理: 异常:org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' not ...
- Model中设置表单验证方法
Model类里面定义$_validate属性支持的验证因子格式: 格式:array(验证字段,验证规则,错误提示,验证条件,附加规则,验证时间). 验证条件: (1)Model::EXISTS_TO_ ...