第1章 你好,C++并发世界

本章内容:

  • 并发和多线程的含义。
  • 为什么应用软件要采用并发和多线程。
  • C++支持并发的历史。
  • 示范简单的C++多线程程序。

对C++程序员来说,现在是激动人心的新时代。初版的C++标准于1998年发布,历经13年,C++标准委员会对语言本身及其标准库做出重大修整。经过大幅度变革,新标准(以下简称C++11或C++0x)于2011年发布,使C++用起来更得心应手,事半功倍。委员会遵守“班车模式”的新式发布规则,每隔3年发布一版新的C++标准。目前,已经有两版标准依次发布——C++14和C++17,还有几份技术规约[1]作为C++标准的扩充。

C++11标准最重要的新特性之一是支持多线程。这是标准首次接纳原生语言层面的多线程应用,并在标准库中为之提供组件。这使得多线程C++程序的编写无须依赖平台专属的扩展(platform-specific extension),因而我们得以写出可移植的、行为确定的多线程代码。并且,新标准的发布正当其时:为改进应用程序的性能,程序员普遍日益寄望于并发技术,特别是多线程编程。以C++11为基础,委员会相继发布了C++14标准、C++17标准和一些技术规约,进一步为编写多线程程序提供支持。在这些技术规约中,其中一份针对并发特性的扩展,而针对并行特性的扩展另有一份,后者已被正式纳入C++17标准。

本书的主旨是介绍运用多线程编写C++并发程序,还有使之得以实现的C++特性和标准库工具。开宗明义,我会先解释自己所理解的并发和多线程;然后“走马观花”,分析应用程序为什么要采用并发技术,以及什么情况下不适合采用并发技术;接着,我们将大致了解C++如何支持并发特性;最后,以一个C++并发程序作为实例,结束本章。某些读者或许已具有开发多线程应用的经验,可以略过前面的章节。后续章节中,我们将学习更多实例,涉及范围更广,我们还会更深入地探究标准库工具。

那么,我所说的并发和多线程,确切的含义分别是什么呢?