命名空间
变体
操作

std::stop_source::request_stop

来自 cppreference.com
< cpp‎ | thread‎ | stop source
 
 
并发支持库
线程
(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 中已弃用)
内存排序
原子操作的自由函数
原子标志的自由函数
 
 
bool request_stop() noexcept;
(自 C++20 起)

向停止状态发出停止请求,如果 stop_source 对象具有停止状态并且尚未请求停止。

该确定是原子完成的,如果请求停止,则原子更新停止状态以避免竞争条件,这样

  • stop_requested()stop_possible() 可以同时在相同停止状态的其他 stop_tokenstop_source 上调用;
  • request_stop() 可以同时在其他 stop_source 对象上调用,并且只有一个会实际执行停止请求。

但是,请参阅“注释”部分。

内容

[edit] 参数

(无)

[edit] 返回值

true 如果 stop_source 对象具有停止状态并且此调用发出了停止请求,否则为 false

[edit] 后置条件

stop_possible()falsestop_requested()true

[edit] 注释

如果 request_stop() 确实发出了停止请求(即返回 true),那么为相同关联停止状态注册的任何 stop_callback 都将在同一线程上同步调用 request_stop() 被发出。如果回调调用通过异常退出,则会调用 std::terminate

如果 stop_source 对象具有停止状态,但已发出停止请求,则此函数返回 false。但是,不能保证另一个刚刚(成功)请求停止的 stop_source 对象是否仍在调用 stop_callback 函数的过程中。

如果 request_stop() 确实发出了停止请求(即返回 true),则所有以可中断等待注册到 stop_source 的停止状态关联 stop_token 的基本类型为 std::condition_variable_any 的条件变量都将被通知。

[edit] 示例