[erlang-questions] Lockfree now()

Wojtek Narczyński <>
Thu Jul 12 20:49:44 CEST 2012


On 07/12/2012 08:23 PM, Erik Søe Sørensen wrote:
> Because of atomic operations.
> I may not have been explicit enough there: latest_now is a 
> java.util.concurrent.AtomicLong, and the two updating accesses to it 
> are atomic.
>                 long prev;
>                 while ((prev = latest_now.get()) < micros) {
>                         if (latest_now.compareAndSet(prev,micros)) {
>                                 return micros;
>                         }
>                 }
>                 return latest_now.incrementAndGet();
>
> This - and only because of this - means that no lock is necessary.
Oh, I think I understand now.

You want to have one coarse-grained clock - protected by a lock, and 
another one fine-grained - updated atomically.

Do I understand correctly now?

--Regards,
Wojtek



More information about the erlang-questions mailing list