这本书将帮助你学习如何用 C++ 实现反应式编程范式,并构建异步和并发应用。这本书包括真实世界的问题,你将使用反应式编程模型来解决。它强调了事件处理在编程世界中的发展方式。您将学习 C++ 中的语言级并发和函数式反应式编程。函数式编程和面向对象编程中的构造将使您能够编写高效的程序。之后,您将在 C++ 中学习微服务,并为RxCpp
创建自定义操作符。
如果你是一个对使用反应式编程来构建异步和并发应用感兴趣的 C++ 开发人员,你会发现这本书非常有用。这本书没有假设任何以前的反应式编程知识。
第 1 章、反应式编程模型–概述和历史,介绍了 Rx 编程模型的一些关键数据结构。它还包括图形用户界面事件处理、反应式编程概述,以及在 MFC 上实现不同界面的图形用户界面版本。
第 2 章、现代 C++ 及其关键习惯用法之旅,涵盖 C++ 特性、类型推断、变量模板、右值引用和移动语义、lambda 函数、初等函数编程、可移植运算符以及迭代器和观察器的实现。
第 3 章、*C++*中的语言级并发和并行,讨论了 c++ 标准中可用的线程库。您将学习如何启动和管理线程,并讨论线程库的不同方面。本章为现代 C++ 中引入的并发支持奠定了良好的基础。
第 4 章、c++ 中的异步和无锁编程,讨论了标准库为编写基于任务的并行性提供的设施。它还讨论了现代 C++ 语言提供的新的多线程感知内存模型。
第 5 章、可观测物介绍,讲述了 GoF 观察者模式,并说明了其不足。您将在表达式树建模的上下文中了解 GoF 复合/访问者模式。
第六章使用 C++ 的事件流编程介绍,重点介绍事件流编程的话题。我们还将查看 Streamulus 库,它提供了一种 DSEL 方法来处理事件流,后面还有几个程序。
第 7 章、数据流计算和 RxCpp 库的介绍,从数据流计算范式的概念概述开始,快速进入编写一些基本的RxCpp
程序。您将了解RxCpp
库支持的一组操作符。
第 8 章RxCPP–关键元素,让您了解 Rx 编程模型的各个部分是如何结合在一起的。本章从 Observables 开始,接下来将介绍订阅机制和调度器实现。
第 9 章、使用 Qt/C++ 进行反应式图形用户界面编程,涉及使用 Qt 进行反应式图形用户界面编程的主题。您将了解 Qt 框架中的概念,例如 Qt 对象层次结构、元对象系统以及信号和槽。然后,您将编写一个应用来处理鼠标事件并过滤它们。在此之后,你还将学习如何在RxCpp
中创建自定义反应操作符的高级主题,如果现有的一组操作符不足以满足目的的话。本主题还通过组合现有运算符来帮助您创建复合运算符。本书中没有这个主题,但可以在https://www . packtpub . com/sites/default/files/downloads/Creating _ Custom _ Operators _ in _ rxcpp . pdf下载。
第十章、c++ Rx 编程的设计模式和习惯用法,深究设计模式和习惯用法的奇妙世界。从 GOF 设计模式开始,我们将转向反应式编程模式。
第 11 章、使用 C++ 的反应式微服务,讲述了如何使用 Rx 编程模型使用 C++ 编写反应式微服务。它向您介绍了微软 C++ REST SDK 及其编程模型。
第 12 章、高级流和处理错误讨论了RxCpp
中的错误处理,以及处理RxCpp
库中流的一些高级构造和操作符。我们将讨论当错误出现时如何继续流,如何等待流的生产者纠正错误并继续序列,以及如何执行适用于成功和错误路径的常见操作。
为了跟上这本书的主题,你需要有 C++ 编程的知识。
你可以从你在www.packtpub.com的账户下载这本书的示例代码文件。如果您在其他地方购买了这本书,您可以访问www.packtpub.com/support并注册将文件直接通过电子邮件发送给您。
您可以按照以下步骤下载代码文件:
- 登录或注册www.packtpub.com。
- 选择“支持”选项卡。
- 点击代码下载和勘误表。
- 在搜索框中输入图书的名称,并按照屏幕指示进行操作。
下载文件后,请确保使用最新版本的解压缩文件夹:
- 视窗系统的 WinRAR/7-Zip
- zipeg/izp/un ARX for MAC
- 适用于 Linux 的 7-Zip/PeaZip
这本书的代码包也托管在 https://github.com/PacktPublishing/CPP-Reactive-Programming 的 GitHub 上。如果代码有更新,它将在现有的 GitHub 存储库中更新。
我们还有来自丰富的图书和视频目录的其他代码包,可在**【https://github.com/PacktPublishing/】**获得。看看他们!
我们还提供了一个 PDF 文件,其中包含本书中使用的截图/图表的彩色图像。你可以在这里下载:https://www . packtpub . com/sites/default/files/downloads/CPPReactiveProgramming _ color images . pdf。
本书通篇使用了许多文本约定。
CodeInText
:表示文本中的码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟网址、用户输入和推特句柄。这里有一个例子:“前面的代码片段用窗口的必要模板初始化了一个名为WNDCLASS
(或者现代系统中的WNDCLASSEX
)的结构。”
代码块设置如下:
/* close connection to server */
XCloseDisplay(display);
return 0;
}
当我们希望将您的注意力吸引到代码块的特定部分时,相关的行或项目以粗体显示:
/* close connection to server */
XCloseDisplay(display);
return 0;
}
任何命令行输入或输出都编写如下:
$ mkdir css
$ cd css
粗体:表示一个新的术语、一个重要的单词或者你在屏幕上看到的单词。例如,菜单或对话框中的单词像这样出现在文本中。这里有一个例子:“用开窗的说法,它被称为消息循环。”
Warnings or important notes appear like this. Tips and tricks appear like this.
我们随时欢迎读者的反馈。
综合反馈:发邮件[email protected]
并在邮件主题中提及书名。如果您对本书的任何方面有疑问,请发电子邮件至[email protected]
。
勘误表:虽然我们已经尽了最大的努力来保证内容的准确性,但是错误还是会发生。如果你在这本书里发现了一个错误,如果你能向我们报告,我们将不胜感激。请访问www.packtpub.com/submit-errata,选择您的图书,点击勘误表提交链接,并输入详细信息。
盗版:如果您在互联网上遇到任何形式的我们作品的非法拷贝,如果您能提供我们的位置地址或网站名称,我们将不胜感激。请通过[email protected]
联系我们,并提供材料链接。
如果你有兴趣成为一名作者:如果有一个你有专长的话题,你有兴趣写或者投稿一本书,请访问authors.packtpub.com。
请留下评论。一旦你阅读并使用了这本书,为什么不在你购买它的网站上留下评论呢?然后,潜在的读者可以看到并使用您不带偏见的意见来做出购买决定,我们在 Packt 可以了解您对我们产品的看法,我们的作者可以看到您对他们的书的反馈。谢谢大家!
更多关于 Packt 的信息,请访问packtpub.com。