@@ -13,15 +13,8 @@ bool request_stop() noexcept;
1313自身が所有している停止状態に対して停止要求を作成する。
1414
1515## 効果
16- 自身が停止状態を所有していない場合は何もせず` false ` を返す。
17-
18- それ以外の場合は、自身の所有している停止状態が停止要求を受け取っているかどうかをアトミックに判定し、まだ停止要求を受け取っていない場合は停止要求を作成する。
19- この判定処理と停止要求の作成処理は、` read-modify-write ` 操作によってアトミックに行われる。
20- 停止要求を受け取っていると判定した場合は何もせず` false ` を返す。
21-
22- 停止要求が作成されたときは、この停止状態に対して登録されている[ ` stop_callback ` ] ( ../stop_callback.md ) のコールバックが同期的に呼び出される。このコールバックの呼び出しが例外によって終了した場合は、[ ` std::terminate() ` ] ( /reference/exception/terminate.md ) 関数が呼び出され、プログラムが異常終了する。
23-
24- もし停止要求が作成されたときに、割り込み可能な待機関数([ ` wait() ` ] ( /reference/condition_variable/condition_variable_any/wait.md ) /[ ` wait_for() ` ] ( /reference/condition_variable/condition_variable_any/wait_for.md ) /[ ` wait_until() ` ] ( /reference/condition_variable/condition_variable_any/wait_until.md ) )で待機中の[ ` condition_variable_any ` ] ( /reference/condition_variable/condition_variable_any.md ) が存在している場合は、そのような` condition_variable_any ` 全てに対して起床通知が送られ、待機関数から処理が戻る。
16+ 停止状態を所有している場合は、[ 停止要求操作] ( ../stoppable-source.md ) を実行する(備考欄を参照)。
17+ そうでなければ、何もせず` false ` を返す。
2518
2619## 戻り値
2720この関数の呼び出しによって停止要求が作成された場合は` true ` を返す。
@@ -31,6 +24,16 @@ bool request_stop() noexcept;
3124## 例外
3225投げない。
3326
27+ ## 備考
28+ 停止要求操作では、停止状態が停止要求を受け取っているかどうかをアトミックに判定し、まだ停止要求を受け取っていない場合は停止要求を作成する。
29+ この判定処理と停止要求の作成処理は、` read-modify-write ` 操作と同様にアトミックに行われる。
30+ 停止要求を受け取っていると判定した場合は何もせず` false ` を返す。
31+
32+ 停止要求が作成されたときは、この停止状態に対して登録されている[ ` stop_callback ` ] ( ../stop_callback.md ) のコールバックが同期的に呼び出される。このコールバックの呼び出しが例外によって終了した場合は、[ ` std::terminate() ` ] ( /reference/exception/terminate.md ) 関数が呼び出され、プログラムが異常終了する。
33+
34+ もし停止要求が作成されたときに、割り込み可能な待機関数([ ` wait() ` ] ( /reference/condition_variable/condition_variable_any/wait.md ) /[ ` wait_for() ` ] ( /reference/condition_variable/condition_variable_any/wait_for.md ) /[ ` wait_until() ` ] ( /reference/condition_variable/condition_variable_any/wait_until.md ) )で待機中の[ ` condition_variable_any ` ] ( /reference/condition_variable/condition_variable_any.md ) が存在している場合は、そのような` condition_variable_any ` 全てに対して起床通知が送られ、待機関数から処理が戻る。
35+
36+
3437## 例
3538``` cpp example
3639#include < cassert>
@@ -130,3 +133,7 @@ int main()
130133- [ ICC] ( /implementation.md#icc ) : ??
131134- [ Visual C++] ( /implementation.md#visual_cpp ) : ??
132135
136+
137+ ## 参照
138+ - [ P0660R10 Stop token and joining thread] ( http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0660r10.pdf )
139+ - [ P2300R10 ` std::execution ` ] ( https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2300r10.html )
0 commit comments