Skip to content

Commit 489de48

Browse files
author
cpprefjp-autoupdate
committed
update automatically
1 parent 6df7c50 commit 489de48

5 files changed

Lines changed: 235 additions & 58 deletions

File tree

reference/execution/execution/parallel_scheduler.html

Lines changed: 36 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -200,12 +200,12 @@
200200

201201
<p class="text-right"><small>
202202
最終更新日時(UTC):
203-
<span itemprop="datePublished" content="2025-08-31T12:40:16">
204-
2025年08月31日 12時40分16秒
203+
<span itemprop="datePublished" content="2026-05-10T16:31:55">
204+
2026年05月10日 16時31分55秒
205205
</span>
206206
<br/>
207207
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
208-
<span itemprop="name">Raclamusi</span>
208+
<span itemprop="name">yoh</span>
209209
</span>
210210
が更新
211211
</small></p>
@@ -252,10 +252,32 @@ <h2>クラス仕様</h2>
252252
<li><code>r.set_stopped()</code>は、<code><a href="set_stopped.html">set_stopped</a>(std::move(rcvr))</code>と同じ効果。</li>
253253
</ul>
254254
<p>プロキシ<code>r</code>に対する事前確保バックエンドストレージ(preallocated backend storage)は、<code><a href="../../span/span.html">span</a>&lt;<a href="../../cstddef/byte.html">byte</a>&gt;</code>型のオブジェクト<code>s</code>であり、<code>r</code>に対して<code><a href="set_value.html">set_value</a></code><code><a href="set_error.html">set_error</a></code><code><a href="set_stopped.html">set_stopped</a></code>いずれかが呼び出されるまで範囲<code>s</code>は有効かつ上書き可能である。</p>
255-
<p>呼び出し可能オブジェクト<code>f</code>と引数<code>arg</code>を持つ<code>rcvr</code>のバルクチャンク化プロキシ(bulk chunked proxy)は、基底
256-
<code><a href="system_context_replaceability/bulk_item_receiver_proxy.html">system_context_replaceability::bulk_item_receiver_proxy</a></code>を持つ<code>rcvr</code>のプロキシ<code>r</code>であり、インデクス<code>i</code>, <code>j</code>に対する<code>r.execute(i, j)</code><code>f(i, j, args...)</code>と同じ効果を持つ。</p>
257-
<p>呼び出し可能オブジェクト<code>f</code>と引数<code>arg</code>を持つ<code>rcvr</code>のバルク非チャンク化プロキシ(bulk unchunked proxy)は、基底
258-
<code><a href="system_context_replaceability/bulk_item_receiver_proxy.html">system_context_replaceability::bulk_item_receiver_proxy</a></code>を持つ<code>rcvr</code>のプロキシ<code>r</code>であり、インデクス<code>i</code>に対する<code>r.execute(i, i + 1)</code><code>f(i, args...)</code>と同じ効果を持つ。</p>
255+
<p><code><a href="get_domain.html">get_domain</a>(sch)</code>は、下記と等価な説明専用の型<code>parallel-scheduler-domain</code>の式を返す。</p>
256+
<p><div class="codehilite"><pre><span></span><code><span class="k">struct</span><span class="w"> </span><span class="nc">parallel</span><span class="o">-</span><span class="n">scheduler</span><span class="o">-</span><span class="n">domain</span><span class="w"> </span><span class="p">{</span>
257+
<span class="w"> </span><span class="k">template</span><span class="o">&lt;</span><span class="n"><a href="sender-for.html">sender-for</a></span><span class="o">&lt;</span><span class="n">bulk_chunked_t</span><span class="o">&gt;</span><span class="w"> </span><span class="n">Sndr</span><span class="p">,</span><span class="w"> </span><span class="n"><a href="../queryable.html">queryable</a></span><span class="w"> </span><span class="n">Env</span><span class="o">&gt;</span>
258+
<span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n"><a href="../../../lang/cpp14/decltype_auto.html">decltype(auto)</a></span>
259+
<span class="w"> </span><span class="n">transform_sender</span><span class="p">(</span><span class="n"><a href="set_value.html">set_value_t</a></span><span class="p">,</span><span class="w"> </span><span class="n">Sndr</span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">sndr</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">Env</span><span class="o">&amp;</span><span class="w"> </span><span class="n">env</span><span class="p">)</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">noexcept</span><span class="w"> </span><span class="p">{</span>
260+
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n"><i>see below</i></span><span class="p">;</span>
261+
<span class="w"> </span><span class="p">}</span>
262+
<span class="w"> </span><span class="k">template</span><span class="o">&lt;</span><span class="n"><a href="sender-for.html">sender-for</a></span><span class="o">&lt;</span><span class="n">bulk_unchunked_t</span><span class="o">&gt;</span><span class="w"> </span><span class="n">Sndr</span><span class="p">,</span><span class="w"> </span><span class="n"><a href="../queryable.html">queryable</a></span><span class="w"> </span><span class="n">Env</span><span class="o">&gt;</span>
263+
<span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n"><a href="../../../lang/cpp14/decltype_auto.html">decltype(auto)</a></span>
264+
<span class="w"> </span><span class="n">transform_sender</span><span class="p">(</span><span class="n"><a href="set_value.html">set_value_t</a></span><span class="p">,</span><span class="w"> </span><span class="n">Sndr</span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">sndr</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">Env</span><span class="o">&amp;</span><span class="w"> </span><span class="n">env</span><span class="p">)</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">noexcept</span><span class="w"> </span><span class="p">{</span>
265+
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n"><i>see below</i></span><span class="p">;</span>
266+
<span class="w"> </span><span class="p">}</span>
267+
<span class="p">};</span>
268+
</code></pre></div>
269+
</p>
270+
<p>上記<code>transform_sender</code>の引数<code>sndr</code>に対して、説明用の変数<code>child</code>, <code>pol</code>, <code>shape</code>, <code>f</code>を下記の通り宣言する。</p>
271+
<p><div class="codehilite"><pre><span></span><code><span class="k">auto</span><span class="o">&amp;</span><span class="w"> </span><span class="p">[</span><span class="n">_</span><span class="p">,</span><span class="w"> </span><span class="n">data</span><span class="p">,</span><span class="w"> </span><span class="n">child</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sndr</span><span class="p">;</span>
272+
<span class="k">auto</span><span class="o">&amp;</span><span class="w"> </span><span class="p">[</span><span class="n">pol</span><span class="p">,</span><span class="w"> </span><span class="n">shape</span><span class="p">,</span><span class="w"> </span><span class="n">f</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">data</span><span class="p">;</span>
273+
</code></pre></div>
274+
</p>
275+
<p>説明用の<code>p</code>を下記とする。</p>
276+
<ul>
277+
<li><code>pol</code>の型が<a class="cpprefjp-defined-word" data-desc="型をconstおよび・もしくはvolatileで修飾すること">CV修飾</a>された<code><a href="execution_policy.html">parallel_policy</a></code>または<code><a href="execution_policy.html">parallel_unsequenced_policy</a></code>のとき、<code>true</code></li>
278+
<li><code>pol</code><a class="cpprefjp-defined-word" data-desc="処理系定義の動作。処理系によって事前に定めた動作をする" href="../../../implementation-compliance.html#dfn-implementation-defined-behavior">処理系定義</a><a href="execution_policy.html">実行ポリシー</a>のとき、<a class="cpprefjp-defined-word" data-desc="処理系定義の動作。処理系によって事前に定めた動作をする" href="../../../implementation-compliance.html#dfn-implementation-defined-behavior">処理系定義</a>の値。</li>
279+
<li>そうでなければ、<code>false</code></li>
280+
</ul>
259281
<h3><code>schedule</code>アルゴリズム</h3>
260282
<p>説明用の<code>b</code><code>BACKEND-OF(sch)</code><code>sndr</code><code><a href="schedule.html">schedule</a>(sch)</code>が返すオブジェクト、<code>rcvr</code><a href="receiver.html">Receiver</a>とする。<code>rcvr</code><code>sndr</code><a href="connect.html">接続(connect)</a>され、結果の<a href="operation_state.html">Operation State</a><a href="start.html">開始(start)</a>されたとき、</p>
261283
<ul>
@@ -267,20 +289,20 @@ <h3><code>schedule</code>アルゴリズム</h3>
267289
<li>他の全ての完了操作は、変更なしに転送される。</li>
268290
</ul>
269291
<h3><code>bulk_chunked</code>アルゴリズム</h3>
270-
<p><code>parallel_scheduler</code><code><a href="bulk_chunked.html">bulk_chunked</a></code>アルゴリズムのカスタマイズ実装を提供する。<a href="receiver.html">Receiver</a><code>rcvr</code><code>bulk_chunked(sndr, pol, shape, f)</code>が返す<a href="sender.html">Sender</a><a href="connect.html">接続(connect)</a>され、結果の<a href="operation_state.html">Operation State</a><a href="start.html">開始(start)</a>されたとき、</p>
292+
<p>タグ<code>bulk_chunked</code><a href="sender.html">Sender</a>を受け付ける<code>transform_sender</code><a class="cpprefjp-defined-word" data-desc="同名の関数を異なる引数・テンプレート・制約などで複数定義すること。または同名の関数の集合">オーバーロード</a>は、<a href="receiver.html">Receiver</a><code>rcvr</code><a href="connect.html">接続(connect)</a>され結果の<a href="operation_state.html">Operation State</a><a href="start.html">開始(start)</a>されたとき、下記動作を行うSenderを返す。</p>
271293
<ul>
272-
<li><code>sndr</code>が値<code>vals</code>で値完了するならば、<code>args</code><code>vals</code>を指す左辺値式のパックとして、<code><a href="system_context_replaceability/parallel_scheduler_backend/schedule_bulk_chunked.html">b.schedule_bulk_chunked</a>(shape, r, s)</code>が呼ばれる。このとき、<ul>
273-
<li><code>r</code>は呼び出し可能オブジェクト<code>f</code>と引数<code>arg</code>を持つ<code>rcvr</code>のバルクチャンク化プロキシであり、かつ</li>
294+
<li><code>child</code>が値<code>vals</code>で値完了するならば、<code>args</code><code>vals</code>を指す左辺値式のパックとして、<code><a href="system_context_replaceability/parallel_scheduler_backend/schedule_bulk_chunked.html">b.schedule_bulk_chunked</a>(p ? shape : 1, r, s)</code>が呼ばれる。このとき、<ul>
295+
<li><code>r</code>は基底クラス<code><a href="system_context_replaceability/bulk_item_receiver_proxy.html">system_context_replaceability::bulk_item_receiver_proxy</a></code>を持つ<code>rcvr</code>のプロキシであり、インデックス<code>i</code>, <code>j</code>に対して<code>r.execute(i, j)</code><code>p</code><code>true</code>のとき<code>f(i, j, args...)</code>、そうでないときは<code>f(0, shape, args...)</code>と等価な効果を持つ。かつ</li>
274296
<li><code>s</code><code>r</code>に対する事前確保バックエンドストレージである。</li>
275297
</ul>
276298
</li>
277299
<li>他の全ての完了操作は、変更なしに転送される。</li>
278300
</ul>
279301
<h3><code>bulk_unchunked</code>アルゴリズム</h3>
280-
<p><code>parallel_scheduler</code><code><a href="bulk_unchunked.html">bulk_unchunked</a></code>アルゴリズムのカスタマイズ実装を提供する。<a href="receiver.html">Receiver</a><code>rcvr</code><code>bulk_unchunked(sndr, pol, shape, f)</code>が返す<a href="sender.html">Sender</a><a href="connect.html">接続(connect)</a>され、結果の<a href="operation_state.html">Operation State</a><a href="start.html">開始(start)</a>されたとき、</p>
302+
<p>タグ<code>bulk_unchunked</code><a href="sender.html">Sender</a>を受け付ける<code>transform_sender</code><a class="cpprefjp-defined-word" data-desc="同名の関数を異なる引数・テンプレート・制約などで複数定義すること。または同名の関数の集合">オーバーロード</a>は、<a href="receiver.html">Receiver</a><code>rcvr</code><a href="connect.html">接続(connect)</a>され結果の<a href="operation_state.html">Operation State</a><a href="start.html">開始(start)</a>されたとき、下記動作を行うSenderを返す。</p>
281303
<ul>
282-
<li><code>sndr</code>が値<code>vals</code>で値完了するならば、<code>args</code><code>vals</code>を指す左辺値式のパックとして、<code><a href="system_context_replaceability/parallel_scheduler_backend/schedule_bulk_unchunked.html">b.schedule_bulk_unchunked</a>(shape, r, s)</code>が呼ばれる。このとき、<ul>
283-
<li><code>r</code>は呼び出し可能オブジェクト<code>f</code>と引数<code>arg</code>を持つ<code>rcvr</code>のバルク非チャンク化プロキシであり、かつ</li>
304+
<li><code>child</code>が値<code>vals</code>で値完了するならば、<code>args</code><code>vals</code>を指す左辺値式のパックとして、<code><a href="system_context_replaceability/parallel_scheduler_backend/schedule_bulk_unchunked.html">b.schedule_bulk_unchunked</a>(p ? shape : 1, r, s)</code>が呼ばれる。このとき、<ul>
305+
<li><code>r</code>は基底クラス<code><a href="system_context_replaceability/bulk_item_receiver_proxy.html">system_context_replaceability::bulk_item_receiver_proxy</a></code>を持つ<code>rcvr</code>のプロキシであり、インデックス<code>i</code>に対して<code>r.execute(i, i + 1)</code><code>p</code><code>true</code>のとき<code>f(i, args...)</code>、そうでないときは<code>for (decltype(shape) i = 0; i &lt; shape; i++) { f(i, args...); }</code>と等価な効果を持つ。かつ</li>
284306
<li><code>s</code><code>r</code>に対する事前確保バックエンドストレージである。</li>
285307
</ul>
286308
</li>
@@ -321,6 +343,7 @@ <h2>参照</h2>
321343
<ul>
322344
<li><a href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2300r10.html" target="_blank">P2300R10 <code>std::execution</code></a></li>
323345
<li><a href="https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p2079r10.html" target="_blank">P2079R10 Parallel scheduler</a></li>
346+
<li><a href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2026/p3804r2.html" target="_blank">P3804R2 Iterating on <code>parallel_scheduler</code></a></li>
324347
</ul></div>
325348

326349
</div>

reference/execution/execution/system_context_replaceability/receiver_proxy.html

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -212,8 +212,8 @@
212212

213213
<p class="text-right"><small>
214214
最終更新日時(UTC):
215-
<span itemprop="datePublished" content="2025-08-29T13:44:49">
216-
2025年08月29日 13時44分49秒
215+
<span itemprop="datePublished" content="2026-05-10T16:31:55">
216+
2026年05月10日 16時31分55秒
217217
</span>
218218
<br/>
219219
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
@@ -255,11 +255,6 @@ <h2>メンバ関数</h2>
255255
</thead>
256256
<tbody>
257257
<tr>
258-
<td><code>virtual ~receiver_proxy() = default;</code></td>
259-
<td>デストラクタ</td>
260-
<td>C++26</td>
261-
</tr>
262-
<tr>
263258
<td><code>virtual void set_value() noexcept = 0;</code></td>
264259
<td>値完了ハンドラ</td>
265260
<td>C++26</td>
@@ -300,6 +295,7 @@ <h2>関連項目</h2>
300295
<h2>参照</h2>
301296
<ul>
302297
<li><a href="https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p2079r10.html" target="_blank">P2079R10 Parallel scheduler</a></li>
298+
<li><a href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2026/p3804r2.html" target="_blank">P3804R2 Iterating on <code>parallel_scheduler</code></a></li>
303299
</ul></div>
304300

305301
</div>

0 commit comments

Comments
 (0)