|
189 | 189 | <p class="text-right"><small> |
190 | 190 | 最終更新日時: |
191 | 191 | <time itemprop="datePublished" class="js-local-time" |
192 | | - datetime="2025-04-03T13:51:18+09:00"> |
193 | | - 2025年04月03日 13時51分18秒 (JST) |
| 192 | + datetime="2026-08-26T10:37:45+09:00"> |
| 193 | + 2026年08月26日 10時37分45秒 (JST) |
194 | 194 | </time> |
195 | 195 | <br/> |
196 | 196 | <span itemprop="author" itemscope itemtype="http://schema.org/Person"> |
197 | | - <span itemprop="name">yoh</span> |
| 197 | + <span itemprop="name">Akira Takahashi</span> |
198 | 198 | </span> |
199 | 199 | が更新 |
200 | 200 | </small></p> |
@@ -330,6 +330,15 @@ <h2><a class="cpprefjp-defined-word" data-desc="関数呼び出し式の評価 |
330 | 330 | <p>なし</p> |
331 | 331 | <h2><a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a></h2> |
332 | 332 | <p>投げない</p> |
| 333 | +<h2>備考</h2> |
| 334 | +<ul> |
| 335 | +<li>アトミックオブジェクト<code>M</code>に対するアトミック変更<code>A</code>・<code>B</code>について、以下のいずれかが成り立つ場合、<code>B</code>は<code>M</code>の変更順序において<code>A</code><a class="cpprefjp-defined-word" data-desc="happens after。(異なるスレッド間の) 2つの操作の実行順序を規定する関係">よりも後に発生する</a>。ここで<code>S</code>は<code><a href="memory_order.html">memory_order_seq_cst</a></code>操作の全順序である。<ul> |
| 336 | +<li><code>A</code>が<code><a href="memory_order.html">memory_order_seq_cst</a></code>フェンス<code>X</code>よりも前に順序付けられており、かつ<code>X</code>が<code>S</code>において<code>B</code>に先行する</li> |
| 337 | +<li><code><a href="memory_order.html">memory_order_seq_cst</a></code>フェンス<code>Y</code>が<code>B</code>よりも前に順序付けられており、かつ<code>A</code>が<code>S</code>において<code>Y</code>に先行する</li> |
| 338 | +<li><code><a href="memory_order.html">memory_order_seq_cst</a></code>フェンス<code>X</code>・<code>Y</code>が存在し、<code>A</code>が<code>X</code>よりも前に、<code>Y</code>が<code>B</code>よりも前に順序付けられており、かつ<code>X</code>が<code>S</code>において<code>Y</code>に先行する</li> |
| 339 | +</ul> |
| 340 | +</li> |
| 341 | +</ul> |
333 | 342 | <h2>例</h2> |
334 | 343 | <p><div class="yata" id="ed09239a05451e366368baf084bf84be6de3bbd0"><div class="codehilite"><pre><span></span><code><span class="cp">#include <a href="../iostream.html"><iostream></a></span> |
335 | 344 | <span class="cp">#include <a href="../atomic.html"><atomic></a></span> |
@@ -378,6 +387,11 @@ <h3>処理系</h3> |
378 | 387 | <h2>参照</h2> |
379 | 388 | <ul> |
380 | 389 | <li><a href="https://www.justsoftwaresolutions.co.uk/threading/implementing_dekkers_algorithm_with_fences.html" target="_blank">Implementing Dekker's algorithm with Fences</a></li> |
| 390 | +<li><a href="https://cplusplus.github.io/LWG/issue2130" target="_blank">LWG Issue 2130. Missing ordering constraints</a><ul> |
| 391 | +<li>C++14で、<code><a href="memory_order.html">memory_order_seq_cst</a></code>フェンスによる変更順序の制約が整理され、フェンスが片側にのみ存在する場合についても順序が規定された</li> |
| 392 | +<li>この修正は欠陥報告(DR)であり、C++11以降に遡及して適用される。元の規定は両側にフェンスがある場合しか扱っておらず、フェンスと<code><a href="memory_order.html">memory_order_seq_cst</a></code>操作を混在させたときの順序が規定から抜けていた記載漏れの補完であるため</li> |
| 393 | +</ul> |
| 394 | +</li> |
381 | 395 | <li><a href="https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p3309r3.html" target="_blank">P3309R3 <code>constexpr atomic</code> and <code>atomic_ref</code></a><ul> |
382 | 396 | <li>C++26で<code>constexpr</code>に対応した</li> |
383 | 397 | </ul> |
|
0 commit comments