std::thread
来自 cppreference.com
在头文件 <thread> 中定义 |
||
class thread; |
(自 C++11 起) | |
类 thread
代表 单个执行线程。线程允许多个函数并发执行。
线程在与关联的线程对象构造时立即开始执行(待任何操作系统调度延迟),从作为 构造函数参数 提供的顶层函数开始。顶层函数的返回值被忽略,如果它通过抛出异常而终止,则调用 std::terminate。顶层函数可以通过 std::promise 或通过修改共享变量(可能需要同步,请参阅 std::mutex 和 std::atomic)将其返回值或异常传递给调用者。
std::thread
对象也可能处于不代表任何线程的状态(在默认构造、移动、detach 或 join 之后),并且执行线程可能与任何 thread
对象无关(在 detach 之后)。
没有两个 std::thread
对象可以代表同一个执行线程;std::thread
不是 CopyConstructible 或 CopyAssignable,尽管它是 MoveConstructible 和 MoveAssignable。
内容 |
[编辑] 成员类型
成员类型 | 定义 |
native_handle_type (可选*) |
实现定义的 |
[编辑] 成员类
代表线程的 id (公共成员类) |
[编辑] 成员函数
构造新的 thread 对象(公共成员函数) | |
析构线程对象,底层线程必须被加入或分离 (公共成员函数) | |
移动线程对象 (公共成员函数) | |
观察者 | |
检查线程是否可加入,即是否可能在并行上下文中运行 (公共成员函数) | |
返回线程的 id (公共成员函数) | |
返回底层实现定义的线程句柄 (公共成员函数) | |
返回实现支持的并发线程数 (公共静态成员函数) | |
操作 | |
等待线程完成其执行 (公共成员函数) | |
允许线程独立于线程句柄执行 (公共成员函数) | |
交换两个线程对象 (公共成员函数) |
[编辑] 非成员函数
(C++11) |
专门化了 std::swap 算法 (函数) |
[编辑] 另见
(C++20) |
std::thread 支持自动加入和取消 (类) |