std::stop_source::request_stop
来自 cppreference.cn
< cpp | thread | stop source
bool request_stop() noexcept; |
(C++20 起) | |
向停止状态(stop-state)发出停止请求,前提是 stop_source
对象拥有一个停止状态,且该状态尚未被请求停止。
这个决定是原子地做出的,如果请求了停止,停止状态会原子地更新以避免竞争条件,这样一来:
- stop_requested() 和 stop_possible() 可以被其他共享同一停止状态的
stop_token
和stop_source
并发地调用; - request_stop() 可以被其他
stop_source
对象并发地调用,而只有一个会实际执行停止请求。
不过,请参阅“注意”一节。
目录 |
[编辑] 参数
(无)
[编辑] 返回值
如果 stop_source
对象拥有一个停止状态且本次调用发出了停止请求,则返回 true,否则返回 false。
[编辑] 后置条件
stop_possible() 为 false 或 stop_requested() 为 true。
[编辑] 注意
如果 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 的条件变量都将被通知。
[编辑] 示例
本节不完整 原因:无示例 |