线程支持库
来自cppreference.com
                    
                                        
                    < cpp
                    
                                                            
                    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 错误码  (枚举)  |