多线程环境
并非所有的语言都提供了多线程的环境。即便是C++语言,直到C++11标准之前,也是没有多线程支持的。
在这种情况下,Linux/Unix平台下的开发者通常会使用POSIX Threads,Windows上的开发者也会有相应的接口。
但很明显,这些API都只针对特定的操作系统平台,可移植性较差。如果要同时支持Linux和Windows系统,你可能要写两套代码。
相较而言,Java自JDK 1.0就包含了多线程模型。
这个状态在C++ 11标准发布之后得到了改变。并且,在C++ 14和C++ 17标准中又对并发编程机制进行了增强。
下图是最近几个版本的C++标准特性的线路图。
编译器与C++标准
编译器对于语言特性的支持是逐步完成的。想要使用特定的特性你需要相应版本的编译器。
C++标准与相应的GCC版本要求如下:
C++版本 GCC版本
C++11 4.8
C++14 5.0
C++17 7.0
C++标准与相应的Clang版本要求如下:
C++版本 Clang版本
C++11 3.3
C++14 3.4
C++17 5.0
默认情况下编译器是以较低的标准来进行编译的,如果希望使用新的标准,你需要通过编译参数-std=c++xx告知编译器,例如:
g++ -std=c++17 your_file.cpp -o your_program