std::stop_source::request_stop
来自 cppreference.cn
< cpp | thread | stop source
bool request_stop() noexcept; |
(since C++20) | |
如果 stop_source
对象拥有停止状态,且尚未请求停止,则向停止状态发出停止请求。
此判定是原子性的,如果已请求停止,则原子性地更新停止状态以避免竞态条件,从而:
- stop_requested() 和 stop_possible() 可以并发地在同一停止状态的其他
stop_token
和stop_source
上调用; - request_stop() 可以并发地在其他
stop_source
对象上调用,并且只有一个会实际执行停止请求。
但是,请参阅“注意”部分。
目录 |
[编辑] 参数
(无)
[编辑] 返回值
true 如果 stop_source
对象拥有停止状态,并且此调用发出了停止请求,否则为 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 基类型的条件变量。
[编辑] 示例
本节尚不完整 原因:没有示例 |