<html><head></head><body><div class="ydp58e12188yahoo-style-wrap" style="font-family: Helvetica Neue, Helvetica, Arial, sans-serif; font-size: 13px;"><div></div>
        <div>Interesting use for select_replace, I think I see. If Old changes in the meantime, it wont succeed as Old wont be found.<br><br>I am aware of select_replace, did not realise you could use it this way. Nifty!</div><div><br></div>
        
        </div><div id="yahoo_quoted_3308368997" class="yahoo_quoted">
            <div style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;color:#26282a;">
                
                <div>
                    On Tuesday, November 20, 2018, 9:16:04 a.m. EST, Sverker Eriksson <sverker@erlang.org> wrote:
                </div>
                <div><br></div>
                <div><br></div>
                <div><div id="yiv5018880429"><div><div><p>You can use ets:select_replace/2 to do an atomic compare-and-swap operation:</p><p><br clear="none"></p>
        <div class="yiv5018880429example yiv5018880429hljs"><pre>[Old] = ets:lookup(T, Key),</pre><pre>New = update_object(Old),</pre><pre>Success = (1 =:= ets:select_replace(T, [{Old, [], [{const, New}]}])),
<br clear="none"></pre><pre><br clear="none"></pre><pre>ets:select_replace/2 was introduced in OTP-20.</pre><pre><br clear="none"></pre><pre><br clear="none"></pre><pre>/Sverker</pre><pre>    </pre></div></div><div><br clear="none"></div><div class="yiv5018880429yqt4280287477" id="yiv5018880429yqt14614"><div>On mån, 2018-11-19 at 18:44 +0000, Vans S wrote:</div><blockquote type="cite"><div>Currently there is no atomic function to update a ETS value when its not a tuple.  For example if one of my ETS values is a map, and I want to put an element into the map, I have no atomic way to do so.<br clear="none"><br clear="none">Is there anyone else that really has a need for a function like :ets.update/3 where arg 1 is ets_table, 2 is key, 3 is fun callback that is called passing the original element and the reply should be the new element?</div><div class="yiv5018880429ydp4921ffaeyahoo-style-wrap" style="font-family:Helvetica Neue, Helvetica, Arial, sans-serif;font-size:13px;"></div><pre>_______________________________________________
erlang-questions mailing list
<a rel="nofollow" shape="rect" ymailto="mailto:erlang-questions@erlang.org" target="_blank" href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a>
<a rel="nofollow" shape="rect" target="_blank" href="http://erlang.org/mailman/listinfo/erlang-questions">http://erlang.org/mailman/listinfo/erlang-questions</a>
</pre></blockquote></div></div></div><div class="yqt4280287477" id="yqt43689">_______________________________________________<br clear="none">erlang-questions mailing list<br clear="none"><a shape="rect" ymailto="mailto:erlang-questions@erlang.org" href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br clear="none"><a shape="rect" href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br clear="none"></div></div>
            </div>
        </div></body></html>