Skip to content

Commit 21e6c50

Browse files
author
cpprefjp-autoupdate
committed
update automatically
1 parent 3388e6a commit 21e6c50

4 files changed

Lines changed: 175 additions & 1404 deletions

File tree

reference/chrono/make24.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ <h2>例</h2>
239239
<span class="w"> </span><span class="n"><a href="../cassert/assert.html">assert</a></span><span class="p">(</span><span class="n"><span style="color:#ff0000">chrono::make24</span></span><span class="p">(</span><span class="n"><a href="duration/op_h.html">12h</a></span><span class="p">,</span><span class="w"> </span><span class="nb">false</span><span class="p">)</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n"><a href="duration/op_h.html">0h</a></span><span class="p">);</span>
240240

241241
<span class="w"> </span><span class="n"><a href="../cassert/assert.html">assert</a></span><span class="p">(</span><span class="n"><span style="color:#ff0000">chrono::make24</span></span><span class="p">(</span><span class="n"><a href="duration/op_h.html">12h</a></span><span class="p">,</span><span class="w"> </span><span class="nb">true</span><span class="p">)</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n"><a href="duration/op_h.html">12h</a></span><span class="p">);</span>
242-
<span class="w"> </span><span class="n"><a href="../cassert/assert.html">assert</a></span><span class="p">(</span><span class="n"><span style="color:#ff0000">chrono::make24</span></span><span class="p">(</span><span class="n"><a href="duration/op_h.html">1h</a></span><span class="p">,</span><span class="w"> </span><span class="nb">true</span><span class="p">)</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">1uz</span><span class="n">jkgoQFmqvVoXrjbRCOUzGLgjXFBXMe</span><span class="p">);</span>
242+
<span class="w"> </span><span class="n"><a href="../cassert/assert.html">assert</a></span><span class="p">(</span><span class="n"><span style="color:#ff0000">chrono::make24</span></span><span class="p">(</span><span class="n"><a href="duration/op_h.html">1h</a></span><span class="p">,</span><span class="w"> </span><span class="nb">true</span><span class="p">)</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">1</span><span class="n"><a href="duration/op_h.html">3h</a></span><span class="p">);</span>
243243
<span class="w"> </span><span class="n"><a href="../cassert/assert.html">assert</a></span><span class="p">(</span><span class="n"><span style="color:#ff0000">chrono::make24</span></span><span class="p">(</span><span class="n"><a href="duration/op_h.html">3h</a></span><span class="p">,</span><span class="w"> </span><span class="nb">true</span><span class="p">)</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n"><a href="duration/op_h.html">15h</a></span><span class="p">);</span>
244244
<span class="w"> </span><span class="n"><a href="../cassert/assert.html">assert</a></span><span class="p">(</span><span class="n"><span style="color:#ff0000">chrono::make24</span></span><span class="p">(</span><span class="n"><a href="duration/op_h.html">11h</a></span><span class="p">,</span><span class="w"> </span><span class="nb">true</span><span class="p">)</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n"><a href="duration/op_h.html">23h</a></span><span class="p">);</span>
245245
<span class="p">}</span>

reference/execution/execution/inline_scheduler.html

Lines changed: 62 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868

6969
</head>
7070
<body>
71-
<header data-kunai-mdinfo="{&#34;meta&#34;: {&#34;header&#34;: [&#34;execution&#34;], &#34;id-type&#34;: [&#34;class&#34;], &#34;namespace&#34;: [&#34;std::execution&#34;], &#34;cpp&#34;: [&#34;cpp26&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;a68826a1a36f74f60c0d1c09d3b7e1f93a31d85e&#34;, &#34;source&#34;: &#34;#include &lt;execution&gt;\n#include &lt;print&gt;\nnamespace ex = std::execution;\n\nint main()\n{\n ex::scheduler auto sch = ex::inline_scheduler{};\n\n std::this_thread::sync_wait(\n ex::schedule(sch)\n | ex::then([]{ std::println(\&#34;task\&#34;); })\n );\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;execution&#34;, &#34;execution&#34;, &#34;inline_scheduler&#34;]}">
71+
<header data-kunai-mdinfo="{&#34;meta&#34;: {&#34;header&#34;: [&#34;execution&#34;], &#34;id-type&#34;: [&#34;class&#34;], &#34;namespace&#34;: [&#34;std::execution&#34;], &#34;cpp&#34;: [&#34;cpp26&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;410e349738c667b6d8517603e319589bf3a26ebb&#34;, &#34;source&#34;: &#34;#include &lt;execution&gt;\n#include &lt;thread&gt;\n#include &lt;print&gt;\nnamespace ex = std::execution;\n\n// ex::task\u7528\u306e\u30ab\u30b9\u30bf\u30e0\u74b0\u5883\nstruct TaskEnv {\n using start_scheduler_type = ex::inline_scheduler;\n};\n\nex::task&lt;void&gt; f(ex::scheduler auto sch)\n{\n std::println(\&#34;step1 main#{}\&#34;, std::this_thread::get_id());\n\n // \u30b9\u30b1\u30b8\u30e5\u30fc\u30e9\u3092\u5909\u66f4\u3057\u3066\u30b5\u30d6\u30bf\u30b9\u30af\u3092\u5b9f\u884c\n co_await (ex::schedule(sch) | ex::then([]{\n std::println(\&#34;step2 worker#{}\&#34;, std::this_thread::get_id());\n }));\n\n // \u30c7\u30d5\u30a9\u30eb\u30c8(task_scheduler)\u30bf\u30b9\u30af\u30b3\u30eb\u30fc\u30c1\u30f3\u306eco_await\u5f0f\u3067\u306f\u3001\n // Scheduler Affinity\u52d5\u4f5c\u306b\u3088\u308a\u5143\u306e\u30b9\u30b1\u30b8\u30e5\u30fc\u30e9\u4e0a\u3067\u51e6\u7406\u304c\u7d99\u7d9a\u3059\u308b\u3002\n std::println(\&#34;step3 main#{}\&#34;, std::this_thread::get_id());\n}\n\nex::task&lt;void, TaskEnv&gt; g(ex::scheduler auto sch)\n{\n std::println(\&#34;step1 main#{}\&#34;, std::this_thread::get_id());\n\n // \u30b9\u30b1\u30b8\u30e5\u30fc\u30e9\u3092\u5909\u66f4\u3057\u3066\u30b5\u30d6\u30bf\u30b9\u30af\u3092\u5b9f\u884c\n co_await (ex::schedule(sch) | ex::then([]{\n std::println(\&#34;step2 worker#{}\&#34;, std::this_thread::get_id());\n }));\n\n // inline_scheduler\u3092\u6301\u3064\u30bf\u30b9\u30af\u30b3\u30eb\u30fc\u30c1\u30f3\u306eco_await\u5f0f\u3067\u306f\u3001\n // \u30b3\u30eb\u30fc\u30c1\u30f3\u306e\u518d\u958b(resume)\u6642\u306b\u518d\u30b9\u30b1\u30b8\u30e5\u30fc\u30ea\u30f3\u30b0\u304c\u884c\u308f\u308c\u306a\u3044\u3002\n // \u3053\u306e\u305f\u3081co_await\u5f0f\u5185\u3067\u5909\u66f4\u3057\u305f\u30b9\u30b1\u30b8\u30e5\u30fc\u30e9\u304c\u5f15\u304d\u7d99\u304c\u308c\u308b\u3002\n std::println(\&#34;step3 worker#{}\&#34;, std::this_thread::get_id());\n}\n\nint main()\n{\n // \u30ef\u30fc\u30ab\u30fc\u30b9\u30ec\u30c3\u30c9\u3092\u958b\u59cb\n ex::run_loop loop;\n std::jthread worker{[&amp;]{\n loop.run();\n }};\n auto sch = loop.get_scheduler();\n\n std::println(\&#34;task_scheduler(default)\&#34;);\n std::this_thread::sync_wait( f(sch) );\n\n std::println(\&#34;inline_scheduler\&#34;);\n std::this_thread::sync_wait( g(sch) );\n\n loop.finish();\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;execution&#34;, &#34;execution&#34;, &#34;inline_scheduler&#34;]}">
7272
<nav class="navbar navbar-default" role="navigation">
7373
<div class="container-fluid">
7474
<div class="navbar-header">
@@ -200,8 +200,8 @@
200200

201201
<p class="text-right"><small>
202202
最終更新日時(UTC):
203-
<span itemprop="datePublished" content="2026-06-09T07:03:31">
204-
2026年06月09日 07時03分31秒
203+
<span itemprop="datePublished" content="2026-06-09T10:26:15">
204+
2026年06月09日 10時26分15秒
205205
</span>
206206
<br/>
207207
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
@@ -307,23 +307,73 @@ <h2>メンバ型</h2>
307307
</tbody>
308308
</table>
309309
<h2></h2>
310-
<p><div class="yata" id="a68826a1a36f74f60c0d1c09d3b7e1f93a31d85e"><div class="codehilite"><pre><span></span><code><span class="cp">#include <a href="../../execution.html">&lt;execution&gt;</a></span>
310+
<p><div class="yata" id="410e349738c667b6d8517603e319589bf3a26ebb"><div class="codehilite"><pre><span></span><code><span class="cp">#include <a href="../../execution.html">&lt;execution&gt;</a></span>
311+
<span class="cp">#include <a href="../../thread.html">&lt;thread&gt;</a></span>
311312
<span class="cp">#include <a href="../../print.html">&lt;print&gt;</a></span>
312313
<span class="k">namespace</span><span class="w"> </span><span class="nn">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nn">std</span><span class="o">::</span><span class="nn">execution</span><span class="p">;</span>
313314

314-
<span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span>
315+
<span class="c1">// <a href="task.html">ex::task</a>用のカスタム環境</span>
316+
<span class="k">struct</span><span class="w"> </span><span class="nc">TaskEnv</span><span class="w"> </span><span class="p">{</span>
317+
<span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="n">start_scheduler_type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n"><span style="color:#ff0000">ex::inline_scheduler</span></span><span class="p">;</span>
318+
<span class="p">};</span>
319+
320+
<span class="n"><a href="task.html">ex::task</a></span><span class="o">&lt;</span><span class="kt">void</span><span class="o">&gt;</span><span class="w"> </span><span class="n">f</span><span class="p">(</span><span class="n"><a href="scheduler.html">ex::scheduler</a></span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">sch</span><span class="p">)</span>
321+
<span class="p">{</span>
322+
<span class="w"> </span><span class="n"><a href="../../print/println.html">std::println</a></span><span class="p">(</span><span class="s">"step1 main#{}"</span><span class="p">,</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">this_thread</span><span class="o">::</span><span class="n">get_id</span><span class="p">());</span>
323+
324+
<span class="w"> </span><span class="c1">// スケジューラを変更してサブタスクを実行</span>
325+
<span class="w"> </span><span class="k">co_await</span><span class="w"> </span><span class="p">(</span><span class="n"><a href="schedule.html">ex::schedule</a></span><span class="p">(</span><span class="n">sch</span><span class="p">)</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n"><a href="then.html">ex::then</a></span><span class="p">([]{</span>
326+
<span class="w"> </span><span class="n"><a href="../../print/println.html">std::println</a></span><span class="p">(</span><span class="s">"step2 worker#{}"</span><span class="p">,</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">this_thread</span><span class="o">::</span><span class="n">get_id</span><span class="p">());</span>
327+
<span class="w"> </span><span class="p">}));</span>
328+
329+
<span class="w"> </span><span class="c1">// デフォルト(task_scheduler)タスクコルーチンのco_await式では、</span>
330+
<span class="w"> </span><span class="c1">// Scheduler Affinity動作により元のスケジューラ上で処理が継続する。</span>
331+
<span class="w"> </span><span class="n"><a href="../../print/println.html">std::println</a></span><span class="p">(</span><span class="s">"step3 main#{}"</span><span class="p">,</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">this_thread</span><span class="o">::</span><span class="n">get_id</span><span class="p">());</span>
332+
<span class="p">}</span>
333+
334+
<span class="n"><a href="task.html">ex::task</a></span><span class="o">&lt;</span><span class="kt">void</span><span class="p">,</span><span class="w"> </span><span class="n">TaskEnv</span><span class="o">&gt;</span><span class="w"> </span><span class="n">g</span><span class="p">(</span><span class="n"><a href="scheduler.html">ex::scheduler</a></span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">sch</span><span class="p">)</span>
315335
<span class="p">{</span>
316-
<span class="w"> </span><span class="n"><a href="scheduler.html">ex::scheduler</a></span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">sch</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n"><span style="color:#ff0000">ex::inline_scheduler</span></span><span class="p">{};</span>
336+
<span class="w"> </span><span class="n"><a href="../../print/println.html">std::println</a></span><span class="p">(</span><span class="s">"step1 main#{}"</span><span class="p">,</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">this_thread</span><span class="o">::</span><span class="n">get_id</span><span class="p">());</span>
337+
338+
<span class="w"> </span><span class="c1">// スケジューラを変更してサブタスクを実行</span>
339+
<span class="w"> </span><span class="k">co_await</span><span class="w"> </span><span class="p">(</span><span class="n"><a href="schedule.html">ex::schedule</a></span><span class="p">(</span><span class="n">sch</span><span class="p">)</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n"><a href="then.html">ex::then</a></span><span class="p">([]{</span>
340+
<span class="w"> </span><span class="n"><a href="../../print/println.html">std::println</a></span><span class="p">(</span><span class="s">"step2 worker#{}"</span><span class="p">,</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">this_thread</span><span class="o">::</span><span class="n">get_id</span><span class="p">());</span>
341+
<span class="w"> </span><span class="p">}));</span>
342+
343+
<span class="w"> </span><span class="c1">// inline_schedulerを持つタスクコルーチンのco_await式では、</span>
344+
<span class="w"> </span><span class="c1">// コルーチンの再開(resume)時に再スケジューリングが行われない。</span>
345+
<span class="w"> </span><span class="c1">// このためco_await式内で変更したスケジューラが引き継がれる。</span>
346+
<span class="w"> </span><span class="n"><a href="../../print/println.html">std::println</a></span><span class="p">(</span><span class="s">"step3 worker#{}"</span><span class="p">,</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">this_thread</span><span class="o">::</span><span class="n">get_id</span><span class="p">());</span>
347+
<span class="p">}</span>
348+
349+
<span class="kt">int</span><span class="w"> </span><span class="n">main</span><span class="p">()</span>
350+
<span class="p">{</span>
351+
<span class="w"> </span><span class="c1">// ワーカースレッドを開始</span>
352+
<span class="w"> </span><span class="n"><a href="run_loop.html">ex::run_loop</a></span><span class="w"> </span><span class="n">loop</span><span class="p">;</span>
353+
<span class="w"> </span><span class="n"><a href="../../thread/jthread.html">std::jthread</a></span><span class="w"> </span><span class="n">worker</span><span class="p">{[</span><span class="o">&amp;</span><span class="p">]{</span>
354+
<span class="w"> </span><span class="n">loop</span><span class="p">.</span><span class="n"><a href="run_loop/run.html">run()</a></span><span class="p">;</span>
355+
<span class="w"> </span><span class="p">}};</span>
356+
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">sch</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">loop</span><span class="p">.</span><span class="n"><a href="run_loop/get_scheduler.html">get_scheduler()</a></span><span class="p">;</span>
357+
358+
<span class="w"> </span><span class="n"><a href="../../print/println.html">std::println</a></span><span class="p">(</span><span class="s">"task_scheduler(default)"</span><span class="p">);</span>
359+
<span class="w"> </span><span class="n"><a href="../this_thread/sync_wait.html">std::this_thread::sync_wait</a></span><span class="p">(</span><span class="w"> </span><span class="n">f</span><span class="p">(</span><span class="n">sch</span><span class="p">)</span><span class="w"> </span><span class="p">);</span>
360+
361+
<span class="w"> </span><span class="n"><a href="../../print/println.html">std::println</a></span><span class="p">(</span><span class="s">"inline_scheduler"</span><span class="p">);</span>
362+
<span class="w"> </span><span class="n"><a href="../this_thread/sync_wait.html">std::this_thread::sync_wait</a></span><span class="p">(</span><span class="w"> </span><span class="n">g</span><span class="p">(</span><span class="n">sch</span><span class="p">)</span><span class="w"> </span><span class="p">);</span>
317363

318-
<span class="w"> </span><span class="n"><a href="../this_thread/sync_wait.html">std::this_thread::sync_wait</a></span><span class="p">(</span>
319-
<span class="w"> </span><span class="n"><a href="schedule.html">ex::schedule</a></span><span class="p">(</span><span class="n">sch</span><span class="p">)</span>
320-
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n"><a href="then.html">ex::then</a></span><span class="p">([]{</span><span class="w"> </span><span class="n"><a href="../../print/println.html">std::println</a></span><span class="p">(</span><span class="s">"task"</span><span class="p">);</span><span class="w"> </span><span class="p">})</span>
321-
<span class="w"> </span><span class="p">);</span>
364+
<span class="w"> </span><span class="n">loop</span><span class="p">.</span><span class="n"><a href="run_loop/finish.html">finish()</a></span><span class="p">;</span>
322365
<span class="p">}</span>
323366
</code></pre></div>
324367
</div></p>
325-
<h3>出力</h3>
326-
<p><pre><code>task
368+
<h3>出力例</h3>
369+
<p><pre><code>task_scheduler(default)
370+
step1 main#124468393588544
371+
step2 worker#124468391311040
372+
step3 main#124468393588544
373+
inline_scheduler
374+
step1 main#124468393588544
375+
step2 worker#124468391311040
376+
step3 worker#124468391311040
327377
</code></pre></p>
328378
<h2>バージョン</h2>
329379
<h3>言語</h3>

0 commit comments

Comments
 (0)