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
オブジェクトと並行的に呼ぶことができ、実際に停止要求を行うのはそのうちの1つのみです。
しかし、ノートも参照してください。
目次 |
[編集]引数
(なし)
[編集]戻り値
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 のすべての条件変数が通知されます。
[編集]例
This section is incomplete Reason: no example |