std::stop_source::request_stop
来自 cppreference.com
< cpp | thread | stop source
bool request_stop() noexcept; |
(自 C++20 起) | |
向停止状态发出停止请求,如果 stop_source
对象具有停止状态并且尚未请求停止。
该确定是原子完成的,如果请求停止,则原子更新停止状态以避免竞争条件,这样
- stop_requested() 和 stop_possible() 可以同时在相同停止状态的其他
stop_token
和stop_source
上调用; - request_stop() 可以同时在其他
stop_source
对象上调用,并且只有一个会实际执行停止请求。
但是,请参阅“注释”部分。
内容 |
[edit] 参数
(无)
[edit] 返回值
true 如果 stop_source
对象具有停止状态并且此调用发出了停止请求,否则为 false。
[edit] 后置条件
stop_possible() 为 false 或 stop_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] 示例
本节不完整 原因:无示例 |