std::coroutine_handle<Promise>::operator(), std::coroutine_handle<Promise>::resume
From cppreference.com
< C++ | coroutine | coroutine handle
| 他の特殊化におけるメンバー |
||
| void operator()() const; void resume() const; |
(1) | (C++20以降) |
std::coroutine_handle<std::noop_coroutine_promise> の特殊化におけるメンバー |
||
| constexpr void operator()() const noexcept; constexpr void resume() const noexcept; |
(2) | (C++20以降) |
1) `*this` が参照するコルーチンの実行を再開します。コルーチンが no-op コルーチンの場合は何も行いません。
2) 何も行いません。
`*this` が中断されたコルーチンを参照していない場合、またはコルーチンが no-op コルーチンではなく、最終的な中断点で中断されていない場合、動作は未定義です。コルーチンの同時再開はデータ競合を引き起こす可能性があります。
中断された実行エージェント以外の実行エージェントでコルーチンを再開する場合、実装定義の動作となります。ただし、各実行エージェントが `std::thread` または `std::jthread` で表されるスレッドであるか、または `main` を実行しているスレッドである場合は除きます。
目次 |
[編集] パラメータ
(なし)
[編集] 戻り値
(なし)
[編集] 例外
コルーチンの実行から例外がスローされた場合、その例外はキャッチされ、コルーチンのプロミスオブジェクトに対して `unhandled_exception` が呼び出されます。`unhandled_exception` の呼び出しで例外がスローまたは再スローされた場合、その例外が伝播されます。
[編集] 注記
異なる実行エージェントで再開されるコルーチンは、ミューテックスオブジェクトを中断点の跨いで保持するなど、一貫したスレッドIDに依存しないようにすべきです。
[編集] 例
| このセクションは未完成です 理由: 例がありません |
[編集] 関連項目
| コルーチンを破棄する (public member function) |