Skip to content

Commit a774c06

Browse files
author
cpprefjp-autoupdate
committed
update automatically
1 parent 30a01fe commit a774c06

File tree

4 files changed

+178
-16
lines changed

4 files changed

+178
-16
lines changed

reference/future/future/valid.html

Lines changed: 9 additions & 7 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;future&#34;], &#34;namespace&#34;: [&#34;std&#34;], &#34;class&#34;: [&#34;future&#34;], &#34;id-type&#34;: [&#34;function&#34;], &#34;cpp&#34;: [&#34;cpp11&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;6dc05fb903f88d745f641a8edb0919d0cdd2637c&#34;, &#34;source&#34;: &#34;#include &lt;iostream&gt;\n#include &lt;future&gt;\n\nint main()\n{\n std::promise&lt;int&gt; p;\n std::future&lt;int&gt; f = p.get_future();\n\n p.set_value(1);\n\n // \u5171\u6709\u72b6\u614b\u3092\u6301\u3063\u3066\u3044\u308b\n std::cout &lt;&lt; std::boolalpha &lt;&lt; f.valid() &lt;&lt; std::endl;\n\n f.get(); // \u4e00\u5ea6\u5024\u3092\u53d6\u308a\u51fa\u3059\u3068\u5171\u6709\u72b6\u614b\u304c\u7834\u68c4\u3055\u308c\u308b\n\n std::cout &lt;&lt; std::boolalpha &lt;&lt; f.valid() &lt;&lt; std::endl;\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;future&#34;, &#34;future&#34;, &#34;valid&#34;]}">
71+
<header data-kunai-mdinfo="{&#34;meta&#34;: {&#34;header&#34;: [&#34;future&#34;], &#34;namespace&#34;: [&#34;std&#34;], &#34;class&#34;: [&#34;future&#34;], &#34;id-type&#34;: [&#34;function&#34;], &#34;cpp&#34;: [&#34;cpp11&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;5b881e57f1e3d38bd2bfc5ba7c191b118649acc3&#34;, &#34;source&#34;: &#34;#include &lt;iostream&gt;\n#include &lt;future&gt;\n\nint main()\n{\n std::promise&lt;int&gt; p;\n std::future&lt;int&gt; f = p.get_future();\n\n // \u5171\u6709\u72b6\u614b\u3092\u6301\u3063\u3066\u3044\u308b\n std::cout &lt;&lt; std::boolalpha &lt;&lt; f.valid() &lt;&lt; std::endl;\n\n p.set_value(1);\n\n // \u3053\u306e\u6642\u70b9\u3067\u3082\u307e\u3060\u5171\u6709\u72b6\u614b\u3092\u6301\u3063\u3066\u3044\u308b\n\n f.get(); // \u4e00\u5ea6\u5024\u3092\u53d6\u308a\u51fa\u3059\u3068\u5171\u6709\u72b6\u614b\u304c\u7834\u68c4\u3055\u308c\u308b\n\n std::cout &lt;&lt; std::boolalpha &lt;&lt; f.valid() &lt;&lt; std::endl;\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;future&#34;, &#34;future&#34;, &#34;valid&#34;]}">
7272
<nav class="navbar navbar-default" role="navigation">
7373
<div class="container-fluid">
7474
<div class="navbar-header">
@@ -200,12 +200,12 @@
200200

201201
<p class="text-right"><small>
202202
最終更新日時(UTC):
203-
<span itemprop="datePublished" content="2024-06-11T13:45:38">
204-
2024年06月11日 13時45分38秒
203+
<span itemprop="datePublished" content="2025-01-04T00:09:03">
204+
2025年01月04日 00時09分03秒
205205
</span>
206206
<br/>
207207
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
208-
<span itemprop="name">Akira Takahashi</span>
208+
<span itemprop="name">I</span>
209209
</span>
210210
が更新
211211
</small></p>
@@ -235,19 +235,21 @@ <h2><a class="cpprefjp-defined-word" data-desc="関数呼び出し式の評価
235235
<h2><a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a></h2>
236236
<p>投げない</p>
237237
<h2></h2>
238-
<p><div class="yata" id="6dc05fb903f88d745f641a8edb0919d0cdd2637c"><div class="codehilite"><pre><span></span><code><span class="cp">#include</span> <span class="cpf"><a href="../../iostream.html">&lt;iostream&gt;</a></span><span class="cp"></span>
238+
<p><div class="yata" id="5b881e57f1e3d38bd2bfc5ba7c191b118649acc3"><div class="codehilite"><pre><span></span><code><span class="cp">#include</span> <span class="cpf"><a href="../../iostream.html">&lt;iostream&gt;</a></span><span class="cp"></span>
239239
<span class="cp">#include</span> <span class="cpf"><a href="../../future.html">&lt;future&gt;</a></span><span class="cp"></span>
240240

241241
<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span>
242242
<span class="p">{</span>
243243
<span class="n"><a href="../promise.html">std::promise</a></span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">p</span><span class="p">;</span>
244244
<span class="n">std</span><span class="o">::</span><span class="n">future</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">f</span> <span class="o">=</span> <span class="n"><a href="../promise/get_future.html">p.get_future()</a></span><span class="p">;</span>
245245

246-
<span class="n"><a href="../promise/set_value.html">p.set_value</a></span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
247-
248246
<span class="c1">// 共有状態を持っている</span>
249247
<span class="n"><a href="../../iostream/cout.html">std::cout</a></span> <span class="o">&lt;&lt;</span> <span class="n"><a href="../../ios/boolalpha.html">std::boolalpha</a></span> <span class="o">&lt;&lt;</span> <span class="n">f</span><span class="p">.</span><span class="n"><span style="color:#ff0000">valid()</span></span> <span class="o">&lt;&lt;</span> <span class="n"><a href="../../ostream/endl.html">std::endl</a></span><span class="p">;</span>
250248

249+
<span class="n"><a href="../promise/set_value.html">p.set_value</a></span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
250+
251+
<span class="c1">// この時点でもまだ共有状態を持っている</span>
252+
251253
<span class="n"><a href="get.html">f.get()</a></span><span class="p">;</span> <span class="c1">// 一度値を取り出すと共有状態が破棄される</span>
252254

253255
<span class="n"><a href="../../iostream/cout.html">std::cout</a></span> <span class="o">&lt;&lt;</span> <span class="n"><a href="../../ios/boolalpha.html">std::boolalpha</a></span> <span class="o">&lt;&lt;</span> <span class="n">f</span><span class="p">.</span><span class="n"><span style="color:#ff0000">valid()</span></span> <span class="o">&lt;&lt;</span> <span class="n"><a href="../../ostream/endl.html">std::endl</a></span><span class="p">;</span>

reference/future/future/wait_for.html

Lines changed: 44 additions & 5 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;future&#34;], &#34;namespace&#34;: [&#34;std&#34;], &#34;class&#34;: [&#34;future&#34;], &#34;id-type&#34;: [&#34;function template&#34;], &#34;cpp&#34;: [&#34;cpp11&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;ca76fe51671a15677ad5a83f5d34211cc477aa73&#34;, &#34;source&#34;: &#34;#include &lt;iostream&gt;\n#include &lt;future&gt;\n#include &lt;thread&gt;\n#include &lt;utility&gt;\n\nvoid calc(std::promise&lt;int&gt; p)\n{\n p.set_value(3); // \u7d50\u679c\u3092\u66f8\u304d\u8fbc\u3080\n}\n\nint main()\n{\n std::promise&lt;int&gt; p;\n std::future&lt;int&gt; f = p.get_future();\n\n std::thread t(calc, std::move(p));\n\n // \u7d50\u679c\u304c\u66f8\u304d\u8fbc\u307e\u308c\u308b\u307e\u3067\u5f85\u6a5f\u3059\u308b\n // 3\u79d2\u3067\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\n std::future_status result = f.wait_for(std::chrono::seconds(3));\n if (result != std::future_status::timeout) {\n // \u7d50\u679c\u3092\u53d6\u308a\u51fa\u3059(\u6e96\u5099\u5b8c\u4e86\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u3059\u3050\u306b\u5024\u3092\u53d6\u308a\u51fa\u305b\u308b)\n std::cout &lt;&lt; f.get() &lt;&lt; std::endl;\n }\n else {\n std::cout &lt;&lt; \&#34;timeout\&#34; &lt;&lt; std::endl;\n }\n\n t.join();\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;future&#34;, &#34;future&#34;, &#34;wait_for&#34;]}">
71+
<header data-kunai-mdinfo="{&#34;meta&#34;: {&#34;header&#34;: [&#34;future&#34;], &#34;namespace&#34;: [&#34;std&#34;], &#34;class&#34;: [&#34;future&#34;], &#34;id-type&#34;: [&#34;function template&#34;], &#34;cpp&#34;: [&#34;cpp11&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;ca76fe51671a15677ad5a83f5d34211cc477aa73&#34;, &#34;source&#34;: &#34;#include &lt;iostream&gt;\n#include &lt;future&gt;\n#include &lt;thread&gt;\n#include &lt;utility&gt;\n\nvoid calc(std::promise&lt;int&gt; p)\n{\n p.set_value(3); // \u7d50\u679c\u3092\u66f8\u304d\u8fbc\u3080\n}\n\nint main()\n{\n std::promise&lt;int&gt; p;\n std::future&lt;int&gt; f = p.get_future();\n\n std::thread t(calc, std::move(p));\n\n // \u7d50\u679c\u304c\u66f8\u304d\u8fbc\u307e\u308c\u308b\u307e\u3067\u5f85\u6a5f\u3059\u308b\n // 3\u79d2\u3067\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\n std::future_status result = f.wait_for(std::chrono::seconds(3));\n if (result != std::future_status::timeout) {\n // \u7d50\u679c\u3092\u53d6\u308a\u51fa\u3059(\u6e96\u5099\u5b8c\u4e86\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u3059\u3050\u306b\u5024\u3092\u53d6\u308a\u51fa\u305b\u308b)\n std::cout &lt;&lt; f.get() &lt;&lt; std::endl;\n }\n else {\n std::cout &lt;&lt; \&#34;timeout\&#34; &lt;&lt; std::endl;\n }\n\n t.join();\n}\n&#34;}, {&#34;id&#34;: &#34;dc081e75f5d556dbdd5ef6c3a8e10148c060ba3b&#34;, &#34;source&#34;: &#34;#include &lt;iostream&gt;\n#include &lt;future&gt;\n#include &lt;chrono&gt;\n\nint main()\n{\n std::promise&lt;int&gt; p;\n std::future&lt;int&gt; f = p.get_future();\n const auto ready = [&amp;f] {\n return f.wait_for(std::chrono::seconds{0}) == std::future_status::ready;\n };\n\n // \u307e\u3060\u5024\u306f\u30bb\u30c3\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\n std::cout &lt;&lt; std::boolalpha &lt;&lt; ready() &lt;&lt; std::endl;\n\n p.set_value(1);\n\n // \u5024\u304c\u30bb\u30c3\u30c8\u3055\u308c\u305f\n std::cout &lt;&lt; std::boolalpha &lt;&lt; ready() &lt;&lt; std::endl;\n\n f.get(); // \u4e00\u5ea6\u5024\u3092\u53d6\u308a\u51fa\u3059\u3068\u5171\u6709\u72b6\u614b\u304c\u7834\u68c4\u3055\u308c\u308b\n\n // \u5171\u6709\u72b6\u614b\u3092\u6301\u305f\u306a\u3044(valid() == false\u306a)future\u3067wait\u3092\u3059\u308b\u3068std::future_error\u4f8b\u5916\n try {\n ready();\n }\n catch(const std::future_error&amp; e) {\n std::cout &lt;&lt; e.what() &lt;&lt; std::endl;\n }\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;future&#34;, &#34;future&#34;, &#34;wait_for&#34;]}">
7272
<nav class="navbar navbar-default" role="navigation">
7373
<div class="container-fluid">
7474
<div class="navbar-header">
@@ -200,12 +200,12 @@
200200

201201
<p class="text-right"><small>
202202
最終更新日時(UTC):
203-
<span itemprop="datePublished" content="2024-06-11T13:45:38">
204-
2024年06月11日 13時45分38秒
203+
<span itemprop="datePublished" content="2025-01-04T00:11:44">
204+
2025年01月04日 00時11分44秒
205205
</span>
206206
<br/>
207207
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
208-
<span itemprop="name">Akira Takahashi</span>
208+
<span itemprop="name">I</span>
209209
</span>
210210
が更新
211211
</small></p>
@@ -244,6 +244,7 @@ <h2><a class="cpprefjp-defined-word" data-desc="問題が発生したときに
244244
<li>C++14 : 時計クラス、<code><a href="../../chrono/time_point.html">time_point</a></code>クラス、<code><a href="../../chrono/duration.html">duration</a></code>クラスの構築が<a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a>を送出する場合、この関数はそれらの<a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a>を送出する。</li>
245245
</ul>
246246
<h2></h2>
247+
<h3>例1</h3>
247248
<p><div class="yata" id="ca76fe51671a15677ad5a83f5d34211cc477aa73"><div class="codehilite"><pre><span></span><code><span class="cp">#include</span> <span class="cpf"><a href="../../iostream.html">&lt;iostream&gt;</a></span><span class="cp"></span>
248249
<span class="cp">#include</span> <span class="cpf"><a href="../../future.html">&lt;future&gt;</a></span><span class="cp"></span>
249250
<span class="cp">#include</span> <span class="cpf"><a href="../../thread.html">&lt;thread&gt;</a></span><span class="cp"></span>
@@ -276,9 +277,47 @@ <h2>例</h2>
276277
<span class="p">}</span>
277278
</code></pre></div>
278279
</div></p>
279-
<h3>出力例</h3>
280+
<h4>出力例</h4>
280281
<p><pre><code>3
281282
</code></pre></p>
283+
<h3>例2</h3>
284+
<p><div class="yata" id="dc081e75f5d556dbdd5ef6c3a8e10148c060ba3b"><div class="codehilite"><pre><span></span><code><span class="cp">#include</span> <span class="cpf"><a href="../../iostream.html">&lt;iostream&gt;</a></span><span class="cp"></span>
285+
<span class="cp">#include</span> <span class="cpf"><a href="../../future.html">&lt;future&gt;</a></span><span class="cp"></span>
286+
<span class="cp">#include</span> <span class="cpf"><a href="../../chrono.html">&lt;chrono&gt;</a></span><span class="cp"></span>
287+
288+
<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span>
289+
<span class="p">{</span>
290+
<span class="n"><a href="../promise.html">std::promise</a></span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">p</span><span class="p">;</span>
291+
<span class="n">std</span><span class="o">::</span><span class="n">future</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">f</span> <span class="o">=</span> <span class="n">p</span><span class="p">.</span><span class="n">get_future</span><span class="p">();</span>
292+
<span class="k">const</span> <span class="k">auto</span> <span class="n">ready</span> <span class="o">=</span> <span class="p">[</span><span class="o">&amp;</span><span class="n">f</span><span class="p">]</span> <span class="p">{</span>
293+
<span class="k">return</span> <span class="n">f</span><span class="p">.</span><span class="n"><span style="color:#ff0000">wait_for</span></span><span class="p">(</span><span class="n"><a href="../../chrono/duration_aliases.html">std::chrono::seconds</a></span><span class="p">{</span><span class="mi">0</span><span class="p">})</span> <span class="o">==</span> <span class="n"><a href="../future_status.html">std::future_status</a></span><span class="o">::</span><span class="n">ready</span><span class="p">;</span>
294+
<span class="p">};</span>
295+
296+
<span class="c1">// まだ値はセットされていない</span>
297+
<span class="n"><a href="../../iostream/cout.html">std::cout</a></span> <span class="o">&lt;&lt;</span> <span class="n"><a href="../../ios/boolalpha.html">std::boolalpha</a></span> <span class="o">&lt;&lt;</span> <span class="n">ready</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n"><a href="../../ostream/endl.html">std::endl</a></span><span class="p">;</span>
298+
299+
<span class="n"><a href="../promise/set_value.html">p.set_value</a></span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
300+
301+
<span class="c1">// 値がセットされた</span>
302+
<span class="n"><a href="../../iostream/cout.html">std::cout</a></span> <span class="o">&lt;&lt;</span> <span class="n"><a href="../../ios/boolalpha.html">std::boolalpha</a></span> <span class="o">&lt;&lt;</span> <span class="n">ready</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n"><a href="../../ostream/endl.html">std::endl</a></span><span class="p">;</span>
303+
304+
<span class="n"><a href="../shared_future/get.html">f.get()</a></span><span class="p">;</span> <span class="c1">// 一度値を取り出すと共有状態が破棄される</span>
305+
306+
<span class="c1">// 共有状態を持たない(<a href="valid.html">valid()</a> == falseな)futureでwaitをすると<a href="../future_error.html">std::future_error</a>例外</span>
307+
<span class="k">try</span> <span class="p">{</span>
308+
<span class="n">ready</span><span class="p">();</span>
309+
<span class="p">}</span>
310+
<span class="k">catch</span><span class="p">(</span><span class="k">const</span> <span class="n"><a href="../future_error.html">std::future_error</a></span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
311+
<span class="n"><a href="../../iostream/cout.html">std::cout</a></span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n"><a href="../../ostream/endl.html">std::endl</a></span><span class="p">;</span>
312+
<span class="p">}</span>
313+
<span class="p">}</span>
314+
</code></pre></div>
315+
</div></p>
316+
<h4>出力例</h4>
317+
<p><pre><code>false
318+
true
319+
std::future_error: No associated state
320+
</code></pre></p>
282321
<h2>バージョン</h2>
283322
<h3>言語</h3>
284323
<ul>

0 commit comments

Comments
 (0)