std::stop_token

来自cppreference.com
< cpp‎ | thread
 
 
并发支持库
线程
(C++11)
(C++20)
this_thread 命名空间
(C++11)
(C++11)
(C++11)
协作式取消
stop_token
(C++20)
互斥
通用锁管理
(C++11)
(C++11)
(C++11)
(C++11)
条件变量
(C++11)
信号量
闩与屏障
(C++20)
(C++20)
未来体
(C++11)
(C++11)
(C++11)
安全回收
风险指针
原子类型
(C++11)
(C++20)
原子类型的初始化
(C++11)(C++20 弃用)
(C++11)(C++20 弃用)
内存定序
(C++11)(C++26 弃用)
原子操作的自由函数
原子标志的自由函数
 
 
在标头 <stop_token> 定义
class stop_token;
(C++20 起)

stop_token 类提供一种检查是否已经或能对其所关联的 std::stop_source 对象作出停止请求的方法。它实质上是关联停止状态的线程安全“视图”。

stop_token 也可以被传递给 std::stop_callback 的构造函数,使得当 stop_token 的关联 std::stop_source 被请求停止时将调用该回调。而且 stop_token 也可以被传递给 std::condition_variable_any 的可中断等待函数,以便当请求停止时中断该条件变量的等待。

目录

[编辑]成员别名模板

类型 定义
callback_type<Callback>(C++26 起)std::stop_callback<Callback>

[编辑]成员函数

构造新的 stop_token 对象
(公开成员函数)[编辑]
销毁 stop_token 对象
(公开成员函数)[编辑]
赋值 stop_token 对象
(公开成员函数)[编辑]
修改器
交换两个 stop_token 对象
(公开成员函数)[编辑]
观察器
检查是否已请求关联停止状态停止
(公开成员函数)[编辑]
检查能否请求关联停止状态停止
(公开成员函数)[编辑]

[编辑]非成员函数

(C++20)
比较两个 std::stop_token 对象
(函数)[编辑]
特化 std::swap 算法
(函数)[编辑]

[编辑]注解

一般不会独立构造 stop_token 对象,而是从 std::jthreadstd::stop_source 取得。这使它与 std::jthreadstd::stop_source 共享相同的关联停止状态。

功能特性测试标准功能特性
__cpp_lib_jthread201911L(C++20)停止令牌结合线程

[编辑]示例

#include <iostream>#include <thread>   usingnamespace std::literals::chrono_literals;   void f(std::stop_token stop_token, int value){while(!stop_token.stop_requested()){std::cout<< value++<<' '<<std::flush;std::this_thread::sleep_for(200ms);}std::cout<<std::endl;}   int main(){std::jthread thread(f, 5);// 打印 5 6 7 8... 约 3 秒std::this_thread::sleep_for(3s);// jthread 的析构函数调用 request_stop() 和 join()。}

可能的输出:

5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
close