行业知识
C++多线程图文详解
2026-11-04 19:07:43
来源:互联网转载
���录
1 什么是C++多线程?
1.1 线程与进程
1.2 并发与并行
1.3 多线程
2 std::thread类
2.1 std::thread类构造函数
2.1 std::thread类成员函数
3 std::mutex类
3.1 类介绍
3.2 std::mutex成员函数
4 std::future异步线程
4.1 std::future异步线程理解
4.2 shared_future异步线程理解
5 原子类型automic
6 C++多线程高级知识
6.1 线程池基础知识
6.2 线程池所解决的问题
1 什么是C++多线程?
1.1 线程与进程
线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,进程包含一个或者多个线程。进程可以理解为完成一件事的完整解决方案,而线程可以理解为这个解决方案中的的一个步骤,可能这个解决方案就这只有一个步骤,也可能这个解决方案有多个步骤。
1.2 并发与并行
并发:是指两个或多个事件在同一时间间隔发生,并发是针对单核 CPU 提出的,在同一CPU上的多个事件。
并行:是指两个或者多个事件在同一时刻发生,并行则是针对多核 CPU 提出,在不同CPU上的多个事件
1.3 多线程
多线程是实现并发(并行)的手段,并发(并行)即多个线程同时执行,一般而言,多线程就是把执行一件事情的完整步骤拆分为多个子步骤,然后使得这多个步骤同时执行。
2 std::thread类
std::thread 在 头文件中声明,因此使用 std::thread 时需要包含 头文件。
2.1 std::thread类构造函数
| 默认构造函数 | thread() noexcept |
| 初始化构造函数 | template |
| 拷贝构造函数 | thread (const thread&) = delete |
| move构造函数 | thread (thread&& x) noexcept |
- 默认构造函数:创建一个空thread对象,该对象非joinable
- 初始化构造函数:创建一个thread对象,该对象会调用Fn函数,Fn函数的参数由args指定,该对象是joinable的
- 拷贝构造函数:被禁用,意味着thread对象不可拷贝构造
- move构造函数:移动构造,执行成功之后x失效,即x的执行信息被移动到新产生的thread对象,该对象非joinable
#include #include #include #include #include #include void f1(int n){ for (int i = 0; i
下一篇:浪潮塔式服务器怎么设置?