C++ 参考手册
- C++11
- C++14
- C++17
- C++20
- C++ 编译器支持情况表
- 独立与宿主实现
- C++ 语言
- C++ 关键词
- 预处理器
- C++ 标准库头文件
- 具名要求
- 功能特性测试 (C++20)
- 工具库
- 类型支持(基本类型、RTTI、类型特性)
- 概念库 (C++20)
- 错误处理
- 动态内存管理
- 日期和时间工具
- 字符串库
- 容器库
- 迭代器库
- 范围库 (C++20)
- 算法库
- 数值库
- 输入/输出库
- 文件系统库
- 本地化库
- 正则表达式库
- 原子操作库
- 线程支持库
- std::thread
- std::stop_token
- std::stop_source
- std::stop_callback
- std::this_thread::get_id
- std::shared_timed_mutex
- std::shared_lock
- std::lock_guard
- std::hardware_destructive_interference_size, std::hardware_constructive_interference_size
- std::counting_semaphore, std::binary_semaphore
- std::jthread
- cpp/thread/barrier
- std::future
- std::this_thread::yield
- std::this_thread::sleep_for
- std::this_thread::sleep_until
- std::mutex
- std::recursive_mutex
- std::shared_mutex
- std::timed_mutex
- std::recursive_timed_mutex
- std::scoped_lock
- std::unique_lock
- std::defer_lock_t, std::try_to_lock_t, std::adopt_lock_t
- std::lock
- std::try_lock
- std::defer_lock, std::try_to_lock, std::adopt_lock
- std::once_flag
- std::call_once
- std::condition_variable
- std::condition_variable_any
- std::notify_all_at_thread_exit
- std::cv_status
- std::latch
- std::promise
- std::shared_future
- std::packaged_task
- std::async
- std::launch
- std::future_status
- std::future_error
- std::future_category
- std::future_errc
- 注释
- 实验性 C++ 特性
- 有用的资源
- 索引
- std 符号索引
- 协程支持 (C++20)
- C++ 关键词
线程支持库
C++ 包含线程、互斥、条件变量和future的内建支持。
线程
线程使得程序能在数个处理器核心同时执行。
定义于头文件
<thread> | |
(C++11) |
管理单独的线程 (类) |
(C++20) |
有自动合并和取消支持的 std::thread (类) |
管理当前线程的函数 | |
定义于命名空间
this_thread | |
(C++11) |
建议实现重新调度各执行线程 (函数) |
(C++11) |
返回当前线程的线程 id (函数) |
(C++11) |
使当前线程的执行停止指定的时间段 (函数) |
(C++11) |
使当前线程的执行停止直到指定的时间点 (函数) |
线程取消
|
(C++20 起) |
缓存大小访问
定义于头文件
<new> | |
避免假共享的最小偏移 促使真共享的最大偏移 (常量) |
互斥
互斥算法避免多个线程同时访问共享资源。这会避免数据竞争,并提供线程间的同步支持。
定义于头文件
<mutex> | |
(C++11) |
提供基本互斥设施 (类) |
(C++11) |
提供互斥设施,实现有时限锁定 (类) |
(C++11) |
提供能被同一线程递归锁定的互斥设施 (类) |
(C++11) |
提供能被同一线程递归锁定的互斥设施,并实现有时限锁定 (类) |
定义于头文件
<shared_mutex> | |
(C++17) |
提供共享互斥设施 (类) |
(C++14) |
提供共享互斥设施并实现有时限锁定 (类) |
通用互斥管理 | |
定义于头文件
<mutex> | |
(C++11) |
实现严格基于作用域的互斥体所有权包装器 (类模板) |
(C++17) |
用于多个互斥体的免死锁 RAII 封装器 (类模板) |
(C++11) |
实现可移动的互斥体所有权包装器 (类模板) |
(C++14) |
实现可移动的共享互斥体所有权封装器 (类模板) |
(C++11)(C++11)(C++11) |
用于指定锁定策略的标签类型 (类) |
(C++11)(C++11)(C++11) |
用于指定锁定策略的标签常量 (常量) |
通用锁定算法 | |
(C++11) |
试图通过重复调用 try_lock 获得互斥体的所有权 (函数模板) |
(C++11) |
锁定指定的互斥体,若任何一个不可用则阻塞 (函数模板) |
单次调用 | |
(C++11) |
确保 call_once 只调用函数一次的帮助对象 (类) |
(C++11) |
仅调用函数一次,即使从多个线程调用 (函数模板) |
条件变量
条件变量是允许多个线程相互交流的同步原语。它允许一定量的线程等待(可以定时)另一线程的提醒,然后再继续。条件变量始终关联到一个互斥。
定义于头文件
<condition_variable> | |
(C++11) |
提供与 std::unique_lock 关联的条件变量 (类) |
(C++11) |
提供与任何锁类型关联的条件变量 (类) |
(C++11) |
安排到在此线程完全结束时对 notify_all 的调用 (函数) |
(C++11) |
列出条件变量上定时等待的可能结果 (枚举) |
信号量信号量 (semaphore) 是一种轻量的同步原件,用于制约对共享资源的并发访问。在可以使用两者时,信号量能比条件变量更有效率。
闩与屏障闩 (latch) 与屏障 (barrier) 是线程协调机制,允许任何数量的线程阻塞直至期待数量的线程到达该屏障。闩不能复用,屏障能重复使用。
|
(C++20 起) |
Future
标准库提供了一些工具来获取异步任务(即在单独的线程中启动的函数)的返回值,并捕捉其所抛出的异常。这些值在共享状态中传递,其中异步任务可以写入其返回值或存储异常,而且可以由持有该引用该共享态的 std::future 或 std::shared_future 实例的线程检验、等待或是操作这个状态。
定义于头文件
<future> | |
(C++11) |
存储一个值以进行异步获取 (类模板) |
(C++11) |
打包一个函数,存储其返回值以进行异步获取 (类模板) |
(C++11) |
等待被异步设置的值 (类模板) |
(C++11) |
等待被异步设置的值(可能为其他 future 所引用) (类模板) |
(C++11) |
异步运行一个函数(有可能在新线程中执行),并返回保有其结果的 std::future (函数模板) |
(C++11) |
指定 std::async 所用的运行策略 (枚举) |
(C++11) |
指定在 std::future 和 std::shared_future 上的定时等待的结果 (枚举) |
Future 错误 | |
(C++11) |
报告与 future 或 promise 有关的错误 (类) |
(C++11) |
鉴别 future 错误类别 (函数) |
(C++11) |
鉴别 future 错误码 (枚举) |