std::stop_source::request_stop
| bool request_stop() noexcept; |
(C++20以降) | |
stop_source オブジェクトが stop-state を持ち、まだ stop がリクエストされていない場合、stop-state に対して stop リクエストを発行します。
この判断はアトミックに行われ、stop がリクエストされた場合、race condition を避けるために stop-state はアトミックに更新されます。そのため、
- stop_requested() および stop_possible() は、同じ stop-state の他の
stop_tokenおよびstop_sourceに対して並行して呼び出すことができます。 - request_stop) は他の
stop_sourceオブジェクトに対して並行して呼び出すことができ、実際に stop リクエストを発行するのは一つだけです。
ただし、Notes セクションを参照してください。
目次 |
[編集] パラメータ
(なし)
[編集] 戻り値
stop_source オブジェクトが stop-state を持ち、この呼び出しが stop リクエストを発行した場合は true、そうでない場合は false。
[編集] 後条件
stop_possible() が false であるか、または stop_requested() が true である。
[編集] Notes
request_stop) が stop リクエストを発行した場合(つまり、true を返した場合)、同じ stop-state に関連付けられた stop_callback は、request_stop) が発行されたスレッドと同じスレッドで同期的に呼び出されます。コールバックの呼び出しが例外で終了した場合、std::terminate が呼び出されます。
stop_source オブジェクトが stop-state を持っているが、stop リクエストが既に発行されている場合、この関数は false を返します。しかし、(成功裏に) stop をリクエストした別の stop_source オブジェクトが stop_callback 関数の呼び出しの途中である可能性がないという保証はありません。
request_stop) が stop リクエストを発行した場合(つまり、true を返した場合)、stop_source の stop-state に関連付けられた stop_token に対する割り込み可能な待機で登録された、基底型 std::condition_variable_any のすべての条件変数に通知されます。
[編集] 例
| このセクションは未完成です 理由: 例がありません |