命名空间
变体
操作

std::stop_callback<Callback>::stop_callback

来自 cppreference.cn
 
 
并发支持库
线程
(C++11)
(C++20)
this_thread 命名空间
(C++11)
(C++11)
(C++11)
协同取消
互斥
(C++11)
通用锁管理
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
条件变量
(C++11)
信号量
闩锁和栅栏
(C++20)
(C++20)
期物
(C++11)
(C++11)
(C++11)
(C++11)
安全回收
(C++26)
危害指针
原子类型
(C++11)
(C++20)
原子类型的初始化
(C++11)(在 C++20 中已弃用)
(C++11)(在 C++20 中已弃用)
内存顺序
(C++11)(在 C++26 中已弃用)
原子操作的自由函数
原子标志的自由函数
 
std::stop_callback
成员函数
stop_callback::stop_callback
推导指引
 
template< class C >
explicit stop_callback( const std::stop_token& st, C&& cb ) noexcept(/*see below*/);
(1) (自 C++20 起)
template< class C >
explicit stop_callback( std::stop_token&& st, C&& cb ) noexcept(/*see below*/);
(2) (自 C++20 起)
stop_callback( const stop_callback& ) = delete;
(3) (自 C++20 起)
stop_callback( stop_callback&& ) = delete;
(4) (自 C++20 起)

构造一个新的 stop_callback 对象,保存并将 cb 回调函数注册到给定的 std::stop_token 的关联停止状态中,以便稍后在关联的 std::stop_source 上请求停止时调用。

1) 为给定的 st std::stop_token(已复制)构造一个 stop_callback,使用给定的可调用回调函数 cb
2) 为给定的 st std::stop_token(已移动)构造一个 stop_callback,使用给定的可调用回调函数 cb
3,4) stop_callback 既不是 CopyConstructible 也不是 MoveConstructible

只有当 CallbackC 满足 constructible_fromstd::constructible_from<Callback, C> 时,两个构造函数才参与重载解析。如果 CallbackC 满足概念但未能满足其语义要求,则行为未定义。

[编辑] 参数

st - 一个 std::stop_token 对象,用于注册此 stop_callback 对象
cb - 如果请求停止时要调用的类型

[编辑] 异常

1,2)
noexcept 规范:  
noexcept(std::is_nothrow_constructible_v<Callback, C>)
通过构造函数初始化将给定回调函数初始化到 stop_callback 对象时抛出的任何异常。

[编辑] 注释

如果对于传入的 std::stop_tokenst.stop_requested() == true,则在构造函数返回之前,将在当前线程中调用回调函数。