引自 C ++并发行动 $ Listing 5.9
A
<div class="modal-body"> <div> <label for="type">article</label> <select id="article" name="article" class="form-control"> {{#each articles}} <option data-price="{{price}}">{{name}}</option> {{/each}} </select> </div> <input type="text" class="form-control" name="desc" id="desc" placeholder="Description" value="{{desc}}"> <input type="text" class="form-control" name="quantity" id="quantity" placeholder="Qté commandée" value="{{quantity}}"> <input type="text" class="form-control" name="price" id="price" placeholder="Prix Unitaire" value="{{price}}"> <input type="text" class="form-control" name="tax" id="tax" placeholder="Taxes" value="{{tax}}"> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">Quité</button> <button type="button" name="add" id="add" onclick="isValid()" class="btn btn-primary" data-dismiss="modal">Ajouter</button> </div> <script> $(document).ready(function () { $('#article').change(function () { var price = $(this).find(':selected').attr('data-price'); $('#price').attr('value', price); }); }); </script>
使用fetch_sub
语义的操作不会与任何内容同步, 即使它存储了一个值,因为它不是一个发布操作。同样,一家商店 无法与具有memory_order_acquire
语义的fetch_or
同步,因为memory_order_release
的读取部分不是获取操作。
我很难理解上面的段落。如果是fetch_or
使用fetch_sub
语义的操作不会与任何内容同步,为什么memory_order_acquire
的接口会为我们留下内存顺序参数,如下所示?
fetch_sub
答案 0 :(得分:2)
memory_order_acquire
RMW操作无法与任何内容同步,但memory_order_release
存储与memory_order_acquire
RMW操作同步,该操作获取从存储读取的值。同样,虽然memory_order_release
商店未与memory_order_release
RMW同步,但memory_order_release
RMW可以与memory_order_acquire
加载同步。memory_order_acq_rel
。