线程支持库
来自cppreference.com
< cpp
C++ 包含线程、互斥、条件变量和期货的内建支持。
目录 |
[编辑] 线程
线程使得程序能跨过数个处理器核心执行。
定义于头文件
<thread> | |
(C++11) |
管理分离的线程 (类) |
管理当前线程的函数 | |
定义于命名空间
this_thread | |
(C++11) |
建议实现再次调度线程的执行 (函数) |
(C++11) |
返回当前线程的线程 id (函数) |
(C++11) |
使线程休眠一段时间 (函数) |
(C++11) |
暂停当前线程的执行直到特定的时间点 (函数) |
[编辑] 缓存大小访问
定义于头文件
<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) |
列出条件变量上定时等待的可能结果 (枚举) |
[编辑] 期货
标准库提供工具,可获得异步任务(即在分离的线程启动的函数)的返回值,并捕捉其所抛出的异常。这些值在共享状态中交流,其中异步任务可能写入其返回值或存储异常,而且可能被保有引用该共享态的 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 上的定时等待的结果 (枚举) |
期货错误 | |
(C++11) |
报告关联到 future 或 promise 的错误 (类) |
(C++11) |
鉴别 future 错误类别 (函数) |
(C++11) |
鉴别 future 错误码 (枚举) |
[编辑] 参阅
线程支持库的 C 文档
|