Namespaces
Variants

std:: thread

From cppreference.net
Concurrency support library
Threads
thread
(C++11)
(C++20)
this_thread namespace
(C++11)
(C++11)
Cooperative cancellation
Mutual exclusion
Generic lock management
Condition variables
(C++11)
Semaphores
Latches and Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
Safe reclamation
Hazard pointers
Atomic types
(C++11)
(C++20)
Initialization of atomic types
(C++11) (deprecated in C++20)
(C++11) (deprecated in C++20)
Memory ordering
(C++11) (deprecated in C++26)
Free functions for atomic operations
Free functions for atomic flags
定义于头文件 <thread>
class thread ;
(C++11 起)

thread 类代表 单个执行线程 。线程允许多个函数并发执行。

线程在关联的线程对象构造完成后立即开始执行(受限于操作系统调度延迟),从作为 构造函数参数 提供的顶层函数开始运行。顶层函数的返回值会被忽略,若其通过抛出异常终止,则将调用 std::terminate 。顶层函数可通过 std::promise 或修改共享变量(这可能需要进行同步,参见 std::mutex std::atomic )将其返回值或异常传递给调用方。

std::thread 对象也可能处于不表示任何线程的状态(在默认构造、移动操作、 detach join 之后),并且执行线程可能不与任何 thread 对象关联(在 detach 之后)。

任意两个 std::thread 对象都不能表示同一执行线程; std::thread 不满足 可复制构造 可复制赋值 要求,但满足 可移动构造 可移动赋值 要求。

目录

成员类型

成员类型 定义
native_handle_type ( 可选* ) 由实现定义

成员类

表示线程的 标识符
(公开成员类)

成员函数

构造新的 thread 对象
(公开成员函数)
析构线程对象,底层线程必须被加入或分离
(公开成员函数)
移动线程对象
(公开成员函数)
观察器
检查线程是否可加入,即是否可能在并行上下文中运行
(公开成员函数)
返回线程的 id
(公开成员函数)
返回底层实现定义的线程句柄
(公开成员函数)
返回实现支持的并发线程数量
(公开静态成员函数)
操作
等待线程完成执行
(公开成员函数)
允许线程独立于线程句柄执行
(公开成员函数)
交换两个线程对象
(公开成员函数)

非成员函数

特化 std::swap 算法
(函数)

参见

(C++20)
std::thread 支持自动合并和取消功能
(类)