<div dir="ltr">Why are you speaking about some CAS instructions, when you just need API in ets module: insert_or_replace<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Jan 15, 2013 at 1:41 PM, Anton Lebedevich <span dir="ltr"><<a href="mailto:mabrek@gmail.com" target="_blank">mabrek@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On 01/14/2013 07:13 PM, Anton Lebedevich wrote:<br>
> On 01/14/2013 07:01 PM, Jesper Louis Andersen wrote:<br>
>> On Jan 14, 2013, at 1:08 PM, Anton Lebedevich <<a href="mailto:mabrek@gmail.com">mabrek@gmail.com</a>> wrote:<br>
>><br>
>>> Is it possible to implement atomic compare-and-set semantics using ets?<br>
>><br>
>> Only in a limited fashion. I guess we either need a specific CAS-instruction, or you have to look up how it is achieved in mnesia, which does to transactional updates.<br>
><br>
> Good catch, I've completely forgot that mnesia already does it, will<br>
> take a look at its sources.<br>
<br>
</div>Reading mnesia sources revealed that it uses transaction manager and<br>
locker processes to serialize modification operations.<br>
Mnesia transactions rely on making modifications sequential not on<br>
CAS-instructions.<br>
<br>
It turns out that CAS which is a workhorse of many non-Erlang concurrent<br>
libraries isn't available in Erlang without NIFs. Am I missing something?<br>
<div class="HOEnZb"><div class="h5"><br>
Regards,<br>
Anton Lebedevich.<br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</div></div></blockquote></div><br></div>