std::stop_source::request_stop

来自cppreference.com
< cpp‎ | thread‎ | stop source
 
 
并发支持库
线程
(C++11)
(C++20)
(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++11)
信号量
闩与屏障
(C++20)
(C++20)
未来体
(C++11)
(C++11)
(C++11)
(C++11)
安全回收
(C++26)
(C++26)
风险指针





原子类型
(C++11)
(C++20)
原子类型的初始化
(C++11)(C++20 中弃用)
(C++11)(C++20 中弃用)
内存定序
原子操作的自由函数
原子标志的自由函数
 
 
bool request_stop() noexcept;
(C++20 起)

stop_source 对象拥有停止状态且未被请求停止,则发出停止请求给停止状态。

原子地作出确定,而若请求了停止,则原子地更新停止状态以避免竞争条件,使得:

  • 能在同一共享状态的其他 std::stop_tokenstd::stop_source 上并发调用 stop_requested()stop_possible()
  • 能在其他 std::stop_source 对象上并发调用 request_stop(),而将只有一个实际进行停止请求。

然而,见注解节。

参数

(无)

返回值

stop_source 对象拥有停止状态且此调用做出了停止请求则为 true,否则为 false

后条件

stop_possible()falsestop_requested()true

注解

request_stop() 确实发出了停止请求(即返回 true),则将在发出 request_stop() 的同一线程上同步调用对同一共享停止状态注册的所有 std::stop_callback。若有任何回调的调用经由异常退出,则调用 std::terminate

若此 stop_source 对象拥有停止状态但已作出停止请求,则此函数返回 false。然而不保证正好对同一停止状态(成功)请求停止的另一 stop_source 不会仍然处于调用某个 std::stop_callback 函数过程中。

request_stop() 确实发出了停止请求(即返回 true),则提醒用与 stop_source 的停止状态关联的 stop_token 的可中断等待注册的、基类型为 std::condition_variable_any 的所有条件变量。

示例