2 - 线程的基本使用
本文将会介绍如何用<thread>
线程库创建一个线程,包括使用函数指针,可调用对象等方式创建;以及线程的阻塞/挂起操作;线程参数的传递;一些概念等内容。
本文将会介绍如何用<thread>
线程库创建一个线程,包括使用函数指针,可调用对象等方式创建;以及线程的阻塞/挂起操作;线程参数的传递;一些概念等内容。
几十年前,程序都是单线程的,CPU市场竞争的是最高频率。但在05年左右单核处理器的性能达到瓶颈,CPU市场开始竞争单个处理器芯片中的最多核心数目,多线程编程便开始发展,并成为主流。通过多线程编程课并行执行多个计算,充分利用系统中多个处理器单元。
C++98/03不支持多线程编程,必须借助第三方库或目标操作系统的多线程API,十分麻烦;而从C++11开始,有了一个标准的多线程库,使编写跨平台的多线程应用程序更容易了。
本文将会介绍一些多线程编程相关的概念,例如并行和并发的区别,什么是争用条件等。
C++标准库包含一个文件系统支持库,定义在<filesystem>
中,并且位于std::filesystem
名称空间中。它允许编写可移植的代码来处理文件系统,例如查询某路径是目录(Dir)还是文件(File),遍历路径内容,检索文件信息等操作。
在<sstream>
头文件中定义了输入和输出字符串流。其中,std::ostringstream
类将数据写入字符串,std::istringstream
类从字符串读出数据,std::stringstream
则综合两者功能。
在<fstream>
头文件中定义了输入和输出文件流:std::ifstream
提供了文件流的输入功能,因为是文件 -> 内存;std::ofstream
提供了文件流的输出功能,因为是内存 -> 文件;此外,还有综合两者的双向文件流std::fstream
。