名前空間
変種
操作

std::stop_source::request_stop

From cppreference.com
< cpp‎ | thread‎ | stop source
 
 
並行性サポートライブラリ
スレッド
(C++11)
(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++20)
(C++20)
future
(C++11)
(C++11)
(C++11)
(C++11)
安全なメモリ解放 (Safe Reclamation)
(C++26)
ハザードポインタ
アトミック型
(C++11)
(C++20)
アトミック型の初期化
(C++11)(C++20で非推奨)
(C++11)(C++20で非推奨)
メモリオーダー
(C++11)(C++26で非推奨)
アトミック操作のためのフリー関数
アトミックフラグのためのフリー関数
 
 
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 のすべての条件変数に通知されます。

[編集]

English 日本語 中文(简体) 中文(繁體)