|
200 | 200 |
|
201 | 201 | <p class="text-right"><small> |
202 | 202 | 最終更新日時(UTC): |
203 | | - <span itemprop="datePublished" content="2025-10-09T02:24:59"> |
204 | | - 2025年10月09日 02時24分59秒 |
| 203 | + <span itemprop="datePublished" content="2025-10-09T06:59:45"> |
| 204 | + 2025年10月09日 06時59分45秒 |
205 | 205 | </span> |
206 | 206 | <br/> |
207 | 207 | <span itemprop="author" itemscope itemtype="http://schema.org/Person"> |
|
225 | 225 | <div class="col-sm-12 content-body"> |
226 | 226 |
|
227 | 227 | <div class="identifier-type">function</div><div class="header"><atomic></div><h1 itemprop="name"><span class="namespace" title="namespace std">std::</span><span class="class" title="class atomic">atomic::</span><span class="token">store_fmaximum_num</span><span class="cpp cpp26" title="C++26で追加">(C++26)</span></h1> |
228 | | -<div itemprop="articleBody"><p><div class="codehilite"><pre><span></span><code><span class="k">constexpr</span> <span class="kt">void</span> |
| 228 | +<div itemprop="articleBody"><p><div class="codehilite"><pre><span></span><code><span class="kt">void</span> |
229 | 229 | <span class="nf">store_fmaximum_num</span><span class="p">(</span><span class="n">difference_type</span> <span class="n">operand</span><span class="p">,</span> |
230 | 230 | <span class="n"><a href="../memory_order.html">memory_order</a></span> <span class="n">order</span> <span class="o">=</span> <span class="n"><a href="../memory_order.html">memory_order_seq_cst</a></span> |
231 | | - <span class="p">)</span> <span class="k">noexcept</span><span class="p">;</span> <span class="c1">// (1) C++26</span> |
| 231 | + <span class="p">)</span> <span class="k">volatile</span> <span class="k">noexcept</span><span class="p">;</span> <span class="c1">// (1) C++26</span> |
| 232 | + |
| 233 | +<span class="k">constexpr</span> <span class="kt">void</span> |
| 234 | + <span class="nf">store_fmaximum_num</span><span class="p">(</span><span class="n">difference_type</span> <span class="n">operand</span><span class="p">,</span> |
| 235 | + <span class="n"><a href="../memory_order.html">memory_order</a></span> <span class="n">order</span> <span class="o">=</span> <span class="n"><a href="../memory_order.html">memory_order_seq_cst</a></span> |
| 236 | + <span class="p">)</span> <span class="k">noexcept</span><span class="p">;</span> <span class="c1">// (2) C++26</span> |
232 | 237 | </code></pre></div> |
233 | 238 | </p> |
234 | 239 | <h2>概要</h2> |
235 | 240 | <p>値を読み込まずに最大値を設定する。</p> |
236 | 241 | <p>この関数は、<code>*this</code>が保持する値と<code>operand</code>の大きい方を求め、その値を<code>this</code>に保持させる。</p> |
237 | | -<p>この関数は、<code><a href="fetch_fmaximum_num.html">fetch_fmaximum_num()</a></code>と異なり、現在の (古い) 値を読み込むことなく現在の値に演算を行うため、高速に動作する。ただし変更前の古い値は<a class="cpprefjp-defined-word" data-desc="関数呼び出し式の評価結果となるオブジェクト・値">戻り値</a>として取得できない。この関数はロックフリーに動作することが保証されているため、並列アルゴリズムで<code><a href="../../execution/execution/execution_policy.html">par_useq</a></code>ポリシーを使う場合などに有用である。</p> |
| 242 | +<p>この関数は、<code><a href="fetch_fmaximum_num.html">fetch_fmaximum_num()</a></code>と異なり、現在の (古い) 値を読み込むことなく現在の値に演算を行うため、高速に動作する。ただし変更前の古い値は<a class="cpprefjp-defined-word" data-desc="関数呼び出し式の評価結果となるオブジェクト・値">戻り値</a>として取得できない。</p> |
| 243 | +<h2><a class="cpprefjp-defined-word" data-desc="関数等の意味論を構成する要素の1つ。Constraints。関数であればオーバーロード解決に参加するための条件、それ以外であれば受け付ける型の条件">テンプレートパラメータ制約</a></h2> |
| 244 | +<ul> |
| 245 | +<li><code>std::atomic<T*></code>の場合、型<code>T</code>がオブジェクト型であること。型<code>T</code>が<code>void*</code>や関数ポインタであってはならない</li> |
| 246 | +<li>(1) : <code>atomic<T>::is_always_lock_free</code>が<code>true</code>であること</li> |
| 247 | +</ul> |
| 248 | +<h2><a class="cpprefjp-defined-word" data-desc="関数等の意味論を構成する要素の1つ。Preconditions。関数呼び出し時に満たされていると関数が想定する条件。満たさなければ未定義の動作。契約属性の`[[expects]]`に相当">事前条件</a></h2> |
| 249 | +<ul> |
| 250 | +<li><code>order</code>は、以下のいずれかであること<ul> |
| 251 | +<li><code><a href="../memory_order.html">memory_order_relaxed</a></code></li> |
| 252 | +<li><code><a href="../memory_order.html">memory_order_release</a></code></li> |
| 253 | +<li><code><a href="../memory_order.html">memory_order_seq_cst</a></code></li> |
| 254 | +</ul> |
| 255 | +</li> |
| 256 | +</ul> |
238 | 257 | <h2>効果</h2> |
239 | 258 | <p><code>order</code>で指定されたメモリオーダーにしたがって、<code>*this</code>が保持する値と<code>operand</code>の最大値を求めて、その値でアトミックに置き換える</p> |
240 | 259 | <h2><a class="cpprefjp-defined-word" data-desc="関数呼び出し式の評価結果となるオブジェクト・値">戻り値</a></h2> |
|
0 commit comments