来自我的CSDN博客

  想查看英文原文的请点击原文网址。在上两篇翻译中,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)的更多相关文章

  1. 全网最详细的Windows系统里Oracle 11g R2 Client客户端(64bit)安装后的初步使用(图文详解)

    不多说,直接上干货! 前期博客 全网最详细的Windows系统里Oracle 11g R2 Client(64bit)的下载与安装(图文详解) 命令行方式测试安装是否成功 1)   打开服务(cmd— ...

  2. BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第9章节--client对象模型和REST APIs概览 client对象模型(CSOM)基础

    BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第9章节--client对象模型和REST APIs概览  client对象模型(CSOM)基础         在SP2 ...

  3. React Native入门——布局实践:开发京东client首页(一)

    有了一些对React Native开发的简单了解,让我们从实战出发.一起来构建一个简单的京东client. 这个client是仿照之前版本号的京东client开发的Android版应用,来源于CSDN ...

  4. 漫谈 Google 的 Native Client 技术(一)---- 历史动力篇(Web 本地计算发展史)

    转自:http://hzx5.blog.163.com/blog/static/40744388201172522313463/ 漫谈 Google 的 Native Client 技术(一)---- ...

  5. ODCA最佳实践翻译:Architecting Cloud-Aware Applications (一)

    Architecting Cloud-Aware Applications ** ODCA(Open Data Center Alliance)最佳实践 ** MagicBowen(e.bowen.w ...

  6. Mina airQQ聊天 client篇(三)

    开发工具 (FlashBuilder4.7) 程序类型(Adobe Air) Flex Air做的桌面程序,效果还挺好看的.最主要是Socket这一块,它也是异步的,而且在Flex中的事件机制比較强大 ...

  7. No fallback instance of type class found for feign client user-service(转)

    1.错误日志 在 feign 开启熔断,配置 fallback 类,实现当前接口的实现类时,报错信息如下: Error starting ApplicationContext. To display ...

  8. React Native布局实践:开发京东client首页(三)——轮播图的实现

    上篇文章中,我们一起构建了京东client的TabBar.在本文中.将继续向大家介绍京东client首页轮播图及其下发功能button的开发方法,如今就让我们開始吧! 1.相关控件调研 眼下在Gith ...

  9. MQTT Client library for C (MQTT客户端C语言库-paho)

    原文:http://www.eclipse.org/paho/files/mqttdoc/MQTTClient/html/index.html 来自我的CSDN博客   最近在使用Paho的MQTT客 ...

随机推荐

  1. Spring MVC体系结构和处理请求控制器

    Spring MVC体系结构和处理请求控制器 一:MVC设计模式: (1.)数据访问接口:DAO层 (2.)处理业务逻辑层:Service层 (3.)数据实体:POJO (4.)负责前段请求接受并处理 ...

  2. 写一个PHP函数,实现扫描并打印出指定目录下(含子目录)的所有jpg文件名

    写一个PHP函数,实现扫描并打印出指定目录下(含子目录)的所有jpg文件名 <?php $dir = "E:\照片\\";//打印文件夹中所有jpg文件 function p ...

  3. js 图片转换为base64

    <input id="file" type="file"> <img id="img" style="max-h ...

  4. 《java.util.concurrent 包源码阅读》25 Fork/Join框架之Fork与Work-Stealing(重写23,24)

    在写前面两篇文章23和24的时候自己有很多细节搞得不是很明白,这篇文章把Fork和Work-Stealing相关的源代码重新梳理一下. 首先来看一些线程池定义的成员变量: 关于scanGuard: v ...

  5. Spring框架——IOC依赖注入

    本来想把IOC和AOP一起介绍的,但是AOP内容太多了,所以就分开了,最后的结果就是这一篇只剩下一点点了.这不是第一次写关于IOC的文章了,之前写过Java反射,Java注解,也写过通过XML解析实现 ...

  6. 网页的居中显示,使用了margin、clear:both

    很久没写过页面了,现在写起来也觉得捡起来还是挺快的. 当时遇到了这样的问题,我有一个大的div包涵了整个网站,有网页头部,中部还有底部.头部就是一个标题,中部就是几张图片跟文字排版,结果左右两边的图片 ...

  7. ptrdiff_t 和 size_t

    size_t和ptrdiff_t常常用来指示数组长度. size_t常用于表示数组的大小,可以一般的将他看为 typedef unsigned int size_t,实质是一个无符号整形.包含在头文件 ...

  8. ubuntu实时显示网速cpu占用和内存占用率

    ubuntu实时显示网速cpu占用和内存占用率 大家在使用ubuntu的时候,有没有想让它实时显示网速,内存占用率,或者cpu占用率呢?现在我就教大家怎么实现,就像下面这样 1. 添加indicato ...

  9. Spring Boot应用 打包与部署指南

    Spring Boot的打包与部署有何特点? Java Web应用在Spring Boot之前,通常是打包成war(Web application ARchive)包,结合Tomcat来完成部署. 对 ...

  10. 纯css美化单选、复选框

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...