名前空間
変種
操作

std::stop_source::request_stop

提供: cppreference.com
< cpp‎ | thread‎ | stop source
 
 
スレッドサポートライブラリ
スレッド
(C++11)
(C++20)
(C++20)
this_thread 名前空間
(C++11)
(C++11)
(C++11)
相互排他
汎用ロック管理
(C++11)
(C++11)
(C++11)(C++11)(C++11)
(C++11)
(C++11)
条件変数
(C++11)
セマフォ
ラッチとバリア
(C++20)
(C++20)
フューチャー
(C++11)
(C++11)
(C++11)
 
 
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 のすべての条件変数が通知されます。

[編集]

close