namespace std::execution {
class inline_scheduler {
class inline-sender; // exposition only
template <receiver R>
class inline-state; // exposition only
public:
using scheduler_concept = scheduler_t;
constexpr inline-sender schedule() noexcept { return {}; }
constexpr bool operator==(const inline_scheduler&) const noexcept = default;
};
}
概要
inline_schedulerは、インラインでタスクを実行するSchedulerである。
schedule操作により得られるSenderとReceiverを接続(connect)したOperationStateは、開始(start)したスレッド上で即座に値完了する。
inline_scheduler型の全オブジェクトは等しい。
クラス仕様
説明専用のクラスinline-senderはsenderを満たす。completion_signatures_of_t<inline-sender>は、completion_signatures<set_value_t()>となる。
説明用のsndrをinline-sender型の式とする。CSをcompletion_signatures<set_value_t()>としたとき、rcvrをreceiver_of<decltype((rcvr)), CS>がtrueとなる式とする。
- 式
connect(sndr, rcvr)の型はinline-state<remove_cvref_t<decltype((rcvr))>>であり、式((void)sndr, auto(rcvr))が潜在的に例外送出(potentially-throwing)するときに限って潜在的に例外送出する。 - 式
get_completion_scheduler<set_value_t>(get_env(sndr))の型はinline_schedulerであり、式get_env(sndr)が潜在的に例外送出(potentially-throwing)するときに限って潜在的に例外送出する。
説明用のoをinline-state<Rcvr>型の非const左辺値とし、REC(o)をoを返す接続(connect)呼び出しへ渡した式rcvrで初期化されたRcvr型の非const左辺値参照とする。
メンバ関数
| 名前 | 説明 | 対応バージョン |
|---|---|---|
(constructor) |
コンストラクタ | C++26 |
(destructor) |
デストラクタ | C++26 |
schedule |
スケジュールSenderを返す | C++26 |
メンバ型
| 名前 | 説明 | 対応バージョン |
|---|---|---|
scheduler_concept |
scheduler_t |
C++26 |
例
#include <execution>
#include <print>
namespace ex = std::execution;
int main()
{
ex::scheduler auto sch = ex::inline_scheduler{};
std::this_thread::sync_wait(
ex::schedule(sch)
| ex::then([]{ std::println("task"); })
);
}
出力
task
バージョン
言語
- C++26
処理系
- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??