Skip to content

Commit fdec77e

Browse files
author
cpprefjp-autoupdate
committed
update automatically
1 parent 06e607e commit fdec77e

File tree

6 files changed

+282
-595
lines changed

6 files changed

+282
-595
lines changed

reference/execution/execution/receiver.html

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -200,8 +200,8 @@
200200

201201
<p class="text-right"><small>
202202
最終更新日時(UTC):
203-
<span itemprop="datePublished" content="2025-04-16T13:16:40">
204-
2025年04月16日 13時16分40秒
203+
<span itemprop="datePublished" content="2025-04-19T12:41:34">
204+
2025年04月19日 12時41分34秒
205205
</span>
206206
<br/>
207207
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
@@ -241,7 +241,12 @@
241241
</p>
242242
<h2>概要</h2>
243243
<p><code>receiver</code>は、型<code>Rcvr</code>がReceiver型の要件を満たすことを表すコンセプトである。</p>
244-
<p><code>receiver_t</code>をメンバ型<code>Rcvr::receiver_concept</code>として定義するクラス型はReceiverとみなせる。</p>
244+
<p>下記をみたすクラス型はReceiverとみなせる。</p>
245+
<ul>
246+
<li><code>receiver_t</code>をメンバ型<code>Rcvr::receiver_concept</code>として定義する</li>
247+
<li><code><a href="get_env.html">get_env</a></code><a href="../queryable.html">環境</a>を取得できる</li>
248+
<li>ムーブ可能</li>
249+
</ul>
245250
<h2>モデル</h2>
246251
<p><code>final</code>指定されたクラス型は<code>receiver</code>のモデルではない。</p>
247252
<h2></h2>

reference/execution/execution/scheduler.html

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -200,8 +200,8 @@
200200

201201
<p class="text-right"><small>
202202
最終更新日時(UTC):
203-
<span itemprop="datePublished" content="2025-04-16T13:16:40">
204-
2025年04月16日 13時16分40秒
203+
<span itemprop="datePublished" content="2025-04-19T12:44:25">
204+
2025年04月19日 12時44分25秒
205205
</span>
206206
<br/>
207207
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
@@ -231,9 +231,9 @@
231231
<span class="n"><a href="../../concepts/derived_from.html">derived_from</a></span><span class="o">&lt;</span><span class="k">typename</span> <span class="n"><a href="../../type_traits/remove_cvref.html">remove_cvref_t</a></span><span class="o">&lt;</span><span class="n">Sch</span><span class="o">&gt;::</span><span class="n">scheduler_concept</span><span class="p">,</span> <span class="n">scheduler_t</span><span class="o">&gt;</span> <span class="o">&amp;&amp;</span>
232232
<span class="n"><a href="../queryable.html">queryable</a></span><span class="o">&lt;</span><span class="n">Sch</span><span class="o">&gt;</span> <span class="o">&amp;&amp;</span>
233233
<span class="n">requires</span><span class="p">(</span><span class="n">Sch</span><span class="o">&amp;&amp;</span> <span class="n">sch</span><span class="p">)</span> <span class="p">{</span>
234-
<span class="p">{</span> <span class="n">schedule</span><span class="p">(</span><span class="n"><a href="../../utility/forward.html">std::forward</a></span><span class="o">&lt;</span><span class="n">Sch</span><span class="o">&gt;</span><span class="p">(</span><span class="n">sch</span><span class="p">))</span> <span class="p">}</span> <span class="o">-&gt;</span> <span class="n"><a href="sender.html">sender</a></span><span class="p">;</span>
234+
<span class="p">{</span> <span class="n"><span href="https://cpprefjp.github.io/reference/execution/execution/schedule.md.nolink">schedule</span></span><span class="p">(</span><span class="n"><a href="../../utility/forward.html">std::forward</a></span><span class="o">&lt;</span><span class="n">Sch</span><span class="o">&gt;</span><span class="p">(</span><span class="n">sch</span><span class="p">))</span> <span class="p">}</span> <span class="o">-&gt;</span> <span class="n"><a href="sender.html">sender</a></span><span class="p">;</span>
235235
<span class="p">{</span> <span class="k">auto</span><span class="p">(</span><span class="n"><span href="https://cpprefjp.github.io/reference/execution/execution/get_completion_scheduler.md.nolink">get_completion_scheduler</span></span><span class="o">&lt;</span><span class="n"><a href="set_value.html">set_value_t</a></span><span class="o">&gt;</span><span class="p">(</span>
236-
<span class="n"><a href="get_env.html">get_env</a></span><span class="p">(</span><span class="n">schedule</span><span class="p">(</span><span class="n"><a href="../../utility/forward.html">std::forward</a></span><span class="o">&lt;</span><span class="n">Sch</span><span class="o">&gt;</span><span class="p">(</span><span class="n">sch</span><span class="p">)))))</span> <span class="p">}</span>
236+
<span class="n"><a href="get_env.html">get_env</a></span><span class="p">(</span><span class="n"><span href="https://cpprefjp.github.io/reference/execution/execution/schedule.md.nolink">schedule</span></span><span class="p">(</span><span class="n"><a href="../../utility/forward.html">std::forward</a></span><span class="o">&lt;</span><span class="n">Sch</span><span class="o">&gt;</span><span class="p">(</span><span class="n">sch</span><span class="p">)))))</span> <span class="p">}</span>
237237
<span class="o">-&gt;</span> <span class="n"><a href="../../concepts/same_as.html">same_as</a></span><span class="o">&lt;</span><span class="n"><a href="../../type_traits/remove_cvref.html">remove_cvref_t</a></span><span class="o">&lt;</span><span class="n">Sch</span><span class="o">&gt;&gt;</span><span class="p">;</span>
238238
<span class="p">}</span> <span class="o">&amp;&amp;</span>
239239
<span class="n"><a href="../../concepts/equality_comparable.html">equality_comparable</a></span><span class="o">&lt;</span><span class="n"><a href="../../type_traits/remove_cvref.html">remove_cvref_t</a></span><span class="o">&lt;</span><span class="n">Sch</span><span class="o">&gt;&gt;</span> <span class="o">&amp;&amp;</span>
@@ -247,14 +247,37 @@ <h2>概要</h2>
247247
<p><code>scheduler</code>は、型<code>Sch</code>がScheduler型の要件を満たすことを表すコンセプトである。</p>
248248
<p>下記をみたすクラス型はSchedulerとみなせる。</p>
249249
<ul>
250-
<li><code>scheduler_t</code>をメンバ型<code>Sch::scheduler_concept</code>として定義するクラス</li>
251-
<li><a href="../queryable.html">クエリ可能オブジェクト</a>であること</li>
252-
<li><code>Sch</code>型の値<code>sch</code>に対して下記が有効な式であること<ul>
253-
<li><code><span href="https://cpprefjp.github.io/reference/execution/execution/schedule.md.nolink">execution::schedule</span>(sch)</code><a href="sender.html">Sender</a>を返すこと</li>
254-
<li><code><span href="https://cpprefjp.github.io/reference/execution/execution/get_completion_scheduler.md.nolink">execution::get_completion_scheduler</span>&lt;<a href="set_value.html">set_value_t</a>&gt;(<a href="get_env.html">execution::get_env</a>(<span href="https://cpprefjp.github.io/reference/execution/execution/schedule.md.nolink">execution::schedule</span>(sch)))</code>の結果が<code>Sch</code>型に等しいこと</li>
250+
<li><code>scheduler_t</code>をメンバ型<code>Sch::scheduler_concept</code>として定義する</li>
251+
<li><a href="../queryable.html">クエリ可能オブジェクト</a>である</li>
252+
<li><code>Sch</code>型の値<code>sch</code>に対して下記を満たすこと<ul>
253+
<li><code><span href="https://cpprefjp.github.io/reference/execution/execution/schedule.md.nolink">execution::schedule</span>(sch)</code><a href="sender.html">Sender</a>を返す</li>
254+
<li>上記Senderの<a href="set_value.html">値完了関数</a><span href="https://cpprefjp.github.io/reference/execution/execution/get_completion_scheduler.md.nolink">完了Scheduler</span><code>Sch</code>に等しいこと</li>
255255
</ul>
256256
</li>
257+
<li>コピー可能かつ同値比較可能</li>
257258
</ul>
259+
<h2>モデル</h2>
260+
<p>説明専用のエイリアステンプレート<code>value-signature</code>, コンセプト<code>sender-in-of</code>を下記の通り定義する。</p>
261+
<p><div class="codehilite"><pre><span></span><code><span class="k">namespace</span> <span class="n">std</span><span class="o">::</span><span class="n">execution</span> <span class="p">{</span>
262+
<span class="k">template</span><span class="o">&lt;</span><span class="n">class</span><span class="p">...</span> <span class="n">As</span><span class="o">&gt;</span>
263+
<span class="k">using</span> <span class="n">value</span><span class="o">-</span><span class="n">signature</span> <span class="o">=</span> <span class="n"><a href="set_value.html">set_value_t</a></span><span class="p">(</span><span class="n">As</span><span class="p">...);</span>
264+
265+
<span class="k">template</span><span class="o">&lt;</span><span class="k">class</span> <span class="nc">Sndr</span><span class="p">,</span> <span class="k">class</span> <span class="nc">Env</span><span class="p">,</span> <span class="n">class</span><span class="p">...</span> <span class="n">Values</span><span class="o">&gt;</span>
266+
<span class="n">concept</span> <span class="n">sender</span><span class="o">-</span><span class="n">in</span><span class="o">-</span><span class="n">of</span> <span class="o">=</span>
267+
<span class="n"><a href="sender_in.html">sender_in</a></span><span class="o">&lt;</span><span class="n">Sndr</span><span class="p">,</span> <span class="n">Env</span><span class="o">&gt;</span> <span class="o">&amp;&amp;</span>
268+
<span class="n">MATCHING</span><span class="o">-</span><span class="n">SIG</span><span class="p">(</span>
269+
<span class="n"><a href="set_value.html">set_value_t</a></span><span class="p">(</span><span class="n">Values</span><span class="p">...),</span>
270+
<span class="n"><span href="https://cpprefjp.github.io/reference/execution/execution/value_types_of_t.md.nolink">value_types_of_t</span></span><span class="o">&lt;</span><span class="n">Sndr</span><span class="p">,</span> <span class="n">Env</span><span class="p">,</span> <span class="n">value</span><span class="o">-</span><span class="n">signature</span><span class="p">,</span> <span class="n"><a href="../../type_traits/true_type.html">type_identity_t</a></span><span class="o">&gt;</span><span class="p">);</span>
271+
<span class="p">}</span>
272+
</code></pre></div>
273+
</p>
274+
<p><code>Sch</code><code>scheduler</code>の型、型<code>Env</code><code><a href="sender_in.html">sender_in</a>&lt;schedule_result_t&lt;Sch&gt;, Env&gt;</code>を満たす実行環境の型としたとき、<code>sender-in-of&lt;schedule_result_t&lt;Sch&gt;, Env&gt;</code>のモデルとなること。</p>
275+
<p><code><a href="../../concepts/copyable.html">copyable</a>&lt;remove_cvref_t&lt;Sch&gt;&gt;</code>および<code><a href="../../concepts/equality_comparable.html">equality_comparable</a>&lt;remove_cvref_t&lt;Sch&gt;&gt;</code>により要求される操作は、<a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a>で終了してはならない。
276+
これらの操作やScheduler型の<code><span href="https://cpprefjp.github.io/reference/execution/execution/schedule.md.nolink">schedule</span></code>関数は、異なるスレッドから同時に操作を呼び出す可能性がある場合でも、データ競合を引き起こしてはならない。</p>
277+
<p>あるScheduler型<code>Sch</code>の2つの値<code>sch1</code><code>sch2</code>に対して、<code>sch1</code><code>sch2</code>が同じ実行リソースを共有する場合に限って、<code>sch1 == sch2</code><code>true</code>となる。</p>
278+
<p>あるScheduler<code>sch</code>に対して、式<code><span href="https://cpprefjp.github.io/reference/execution/execution/get_completion_scheduler.md.nolink">get_completion_scheduler</span>&lt;<a href="set_value.html">set_value_t</a>&gt;(<a href="get_env.html">get_env</a>(<span href="https://cpprefjp.github.io/reference/execution/execution/schedule.md.nolink">schedule</span>(sch)))</code><code>sch</code>と等しいこと。</p>
279+
<p>あるScheduler<code>sch</code>に対して式<code><span href="https://cpprefjp.github.io/reference/execution/execution/get_domain.md.nolink">get_domain</span>(sch)</code><a class="cpprefjp-defined-word" data-desc="プログラムが文法規則・診断対象の意味規則・単一定義規則を満たすこと" href="../../../implementation-compliance.html#dfn-well-formed">適格</a>であるとき、式<code>get_domain(<a href="get_env.html">get_env</a>(schedule(sch)))</code><a class="cpprefjp-defined-word" data-desc="プログラムが文法規則・診断対象の意味規則・単一定義規則を満たすこと" href="../../../implementation-compliance.html#dfn-well-formed">適格</a>であり、かつ同じ型を持つ。</p>
280+
<p>Scheduler型のデストラクタは、<code>schedule</code>が返すSenderオブジェクトに接続されたReceiverの完了を待機してブロックしてはならない。</p>
258281
<h2></h2>
259282
<p><div class="yata" id="ffa0b39ad40caa8669517508a07b4044e1c84bc6"><div class="codehilite"><pre><span></span><code><span class="cp">#include</span> <span class="cpf"><a href="../../execution.html">&lt;execution&gt;</a></span><span class="cp"></span>
260283
<span class="k">namespace</span> <span class="n">ex</span> <span class="o">=</span> <span class="n">std</span><span class="o">::</span><span class="n">execution</span><span class="p">;</span>

reference/execution/execution/sender.html

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -200,8 +200,8 @@
200200

201201
<p class="text-right"><small>
202202
最終更新日時(UTC):
203-
<span itemprop="datePublished" content="2025-04-18T14:58:28">
204-
2025年04月18日 14時58分28秒
203+
<span itemprop="datePublished" content="2025-04-19T12:41:34">
204+
2025年04月19日 12時41分34秒
205205
</span>
206206
<br/>
207207
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
@@ -235,10 +235,15 @@
235235
</p>
236236
<h2>概要</h2>
237237
<p><code>sender</code>は、型<code>Sndr</code>がSender型の要件を満たすことを表すコンセプトである。</p>
238-
<p>次のいずれかのクラス型はSenderとみなせる</p>
238+
<p>下記をみたすクラス型はSenderとみなせる</p>
239239
<ul>
240-
<li><code>sender_t</code>をメンバ型<code>Sndr::sender_concept</code>として定義するクラス型</li>
241-
<li><a href="../../../lang/cpp20/coroutines.html">コルーチンのAwaitable型</a>クラス型</li>
240+
<li>下記いずれかを満たす<ul>
241+
<li><code>sender_t</code>をメンバ型<code>Sndr::sender_concept</code>として定義する</li>
242+
<li><a href="../../../lang/cpp20/coroutines.html">コルーチンのAwaitable型</a></li>
243+
</ul>
244+
</li>
245+
<li><code><a href="get_env.html">get_env</a></code><a href="../queryable.html">属性</a>を取得できる</li>
246+
<li>ムーブ可能</li>
242247
</ul>
243248
<h2>要件</h2>
244249
<p>説明専用コンセプト<code>is-sender</code>, <code>enable-sender</code>を以下のように定義する。</p>

reference/execution/execution/start.html

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,11 @@
2828
<meta property="og:url" content="https://cpprefjp.github.io/reference/execution/execution/start.html" />
2929
<meta property="og:site_name" content="cpprefjp - C++日本語リファレンス" />
3030
<meta property="og:type" content="article" />
31-
<meta property="og:description" content="`start`は、[Operation State](operation_state.md)を開始するカスタマイゼーションポイントオブジェクトである。" />
31+
<meta property="og:description" content="`start`は、[Operation State](operation_state.md)関連付けられた非同期操作(asynchronous operation)を開始するカスタマイゼーションポイントオブジェクトである。" />
3232
<meta name="twitter:card" content="summary" />
3333
<meta name="twitter:title" content="start - cpprefjp C++日本語リファレンス" />
3434
<meta name="twitter:url" content="https://cpprefjp.github.io/reference/execution/execution/start.html" />
35-
<meta name="twitter:description" content="`start`は、[Operation State](operation_state.md)を開始するカスタマイゼーションポイントオブジェクトである。" />
35+
<meta name="twitter:description" content="`start`は、[Operation State](operation_state.md)関連付けられた非同期操作(asynchronous operation)を開始するカスタマイゼーションポイントオブジェクトである。" />
3636

3737

3838
<link rel="alternate" type="application/atom+xml" title="Atom" href="https://cpprefjp.github.io/rss.xml" />
@@ -200,8 +200,8 @@
200200

201201
<p class="text-right"><small>
202202
最終更新日時(UTC):
203-
<span itemprop="datePublished" content="2025-04-18T15:30:32">
204-
2025年04月18日 15時30分32秒
203+
<span itemprop="datePublished" content="2025-04-19T12:41:34">
204+
2025年04月19日 12時41分34秒
205205
</span>
206206
<br/>
207207
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
@@ -232,14 +232,16 @@
232232
</code></pre></div>
233233
</p>
234234
<h2>概要</h2>
235-
<p><code>start</code>は、<a href="operation_state.html">Operation State</a>を開始する<a class="cpprefjp-defined-word" data-desc="プログラム定義型に対するオーバーロードが許されている標準関数名について、中でいい感じにオーバーロード解決して呼び出してくれる関数オブジェクト">カスタマイゼーションポイントオブジェクト</a>である。</p>
235+
<p><code>start</code>は、<a href="operation_state.html">Operation State</a>関連付けられた非<a class="cpprefjp-defined-word" data-desc="マルチスレッド実行時にリソースの所有権に基づいて実行順序を制御する操作">同期操作</a>(asynchronous operation)を開始する<a class="cpprefjp-defined-word" data-desc="プログラム定義型に対するオーバーロードが許されている標準関数名について、中でいい感じにオーバーロード解決して呼び出してくれる関数オブジェクト">カスタマイゼーションポイントオブジェクト</a>である。</p>
236236
<h2>効果</h2>
237237
<p><code>start(op)</code>は、<code>op</code>が右辺値の場合は<a class="cpprefjp-defined-word" data-desc="プログラムが適格でないこと。コンパイルエラーなどになる" href="../../../implementation-compliance.html#dfn-ill-formed">不適格</a>となる。
238238
そうでなければ、<code>op.start()</code>と等価。</p>
239-
<p><code>op.start()</code><a href="operation_state.html">Operation State</a>に関連付けさられた非<a class="cpprefjp-defined-word" data-desc="マルチスレッド実行時にリソースの所有権に基づいて実行順序を制御する操作">同期操作</a>を開始しない場合、式<code>start(op)</code><a class="cpprefjp-defined-word" data-desc="未定義の動作。処理系は予期せぬ動作をする可能性がある。要するに動作保証対象外。undefined behavior (UB)。" href="../../../implementation-compliance.html#dfn-undefined-behavior">動作は未定義</a>となる。</p>
239+
<p><code>op.start()</code><a href="operation_state.html">Operation State</a>に関連付けられた非<a class="cpprefjp-defined-word" data-desc="マルチスレッド実行時にリソースの所有権に基づいて実行順序を制御する操作">同期操作</a>を開始しない場合、式<code>start(op)</code><a class="cpprefjp-defined-word" data-desc="未定義の動作。処理系は予期せぬ動作をする可能性がある。要するに動作保証対象外。undefined behavior (UB)。" href="../../../implementation-compliance.html#dfn-undefined-behavior">動作は未定義</a>となる。</p>
240240
<h2>カスタマイゼーションポイント</h2>
241241
<p><a href="operation_state.html">Operation State</a><code>op</code>に対して式<code>op.start()</code>が呼び出される。
242242
このとき<code>noexcept(op.start()) == true</code>であること。</p>
243+
<h2>備考</h2>
244+
<p><code>start</code><a href="sender.html">Sender</a>内部実装から呼び出される想定であり、実行制御ライブラリ利用者が直接利用する必要はない。</p>
243245
<h2></h2>
244246
<p><div class="codehilite"><pre><span></span><code><span class="cp">#include</span> <span class="cpf"><a href="../../print.html">&lt;print&gt;</a></span><span class="cp"></span>
245247
<span class="cp">#include</span> <span class="cpf"><a href="../../execution.html">&lt;execution&gt;</a></span><span class="cp"></span>

0 commit comments

Comments
 (0)