[erlang-questions] atomic ets:take_first, ets:take_last

Alexandre Beniaminov <>
Fri Jul 15 00:48:49 CEST 2016


Thank you.
You're right, and you've answered on part of my question:

<< Now, anything can happen in between, so in particular, ets:take/2 may
return [] if the key was deleted or taken out by another process between
the two calls.>>

I would like to ask the community what do you think about to add  to ets
module two atomic functions: ets:take_first/1 and ets:take_last/1  ?

2016-07-15 1:39 GMT+03:00 Alexandre Beniaminov <>:

> Thank you.
> You're right, and you've answered on part of my question:
>
> << Now, anything can happen in between, so in particular, ets:take/2 may
> return [] if the key was deleted or taken out by another process between
> the two calls.>>
>
> I would like to ask the community what do you think about to add  to ets
> module two atomic functions: ets:take_first/1 and ets:take_last/1  ?
>
> 2016-07-14 21:19 GMT+03:00 Jesper Louis Andersen <
> >:
>
>>
>> On Thu, Jul 14, 2016 at 8:06 PM, Alexandre Beniaminov <
>> > wrote:
>>
>>> atomic
>>
>>
>> You have to say what you expect to be atomic/linearizable. In your above
>> code, suppose you are being scheduled out between the call to ets:first/1
>> and ets:take/2. Now, anything can happen in between, so in particular,
>> ets:take/2 may return [] if the key was deleted or taken out by another
>> process between the two calls.
>>
>> But taken individually, the set of ets:first/1, ets:take/2 and
>> ets:lookup/2 ought to be linearizable. I.e., there is some point in time
>> (the atomic commit-point) at which ets:take/2 removes the objects. After
>> this commit-point first/1 and lookup/2 will not see the Key present in the
>> table anymore.
>>
>> So the question of if it is atomic or not depends on the precise
>> definition of what you ask.
>>
>>
>> --
>> J.
>>
>
>
>
> --
> С уважением,
> Александр Бениаминов
>



-- 
С уважением,
Александр Бениаминов
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20160715/8ac5c79e/attachment.html>


More information about the erlang-questions mailing list