std::stop_source::request_stop
< cpp | thread | stop source
bool request_stop() noexcept; |
(C++20 起) | |
若 stop_source
对象拥有停止状态且未被请求停止,则发出停止请求给停止状态。
原子地作出确定,而若请求了停止,则原子地更新共享状态以避免竞争条件,使得:
- 能在同一共享状态的 std::stop_token 与 std::stop_source 上同时调用 stop_requested() 与 stop_possible()
- 能从多个线程在同一
jthread
对象或与同一停止状态关联的其他 std::stop_source 对象上并发调用 request_stop() ,而将只有一个线程实际进行停止请求
然而,见注解节。
参数
(无)
返回值
若 stop_source
对象拥有停止状态且此调用做出停止请求则为 true ,否则为 false 。
后条件
stop_possible() 为 false 或 stop_requested() 为 true 。
注解
若 request_stop() 发出停止请求(即返回 true ),则将在发出 request_stop() 的同一线程上同步调用对同一共享停止状态注册的任何 std::stop_callbacks 。若任何回调的调用经由异常退出,则调用 std::terminate 。
若 stop_source
对象拥有停止状态但已作出停止请求,则此函数返回 false 。然而不保证正好对同一停止状态(成功)请求停止的另一 stop_source
不仍然在调用 std::stop_callback 函数的中间。
若 request_stop() 发出停止请求(即返回 true ),则提醒所有用与 stop_source
的停止状态关联的 stop_token
的可中断等待注册的、基类型为 std::condition_variable_any 的条件变量。
示例
本节未完成 原因:暂无示例 |