atom feed9 messages in edu.oswego.cs.concurrency-interestRe: [concurrency-interest] Using Atom...
FromSent OnAttachments
Ariel WeisbergFeb 13, 2013 12:41 pm 
Vitaly DavidovichFeb 13, 2013 12:51 pm 
Ariel WeisbergFeb 13, 2013 1:45 pm 
Vitaly DavidovichFeb 13, 2013 2:15 pm 
Aaron GrunthalFeb 13, 2013 7:37 pm 
Chris DennisFeb 14, 2013 8:15 am 
Ariel WeisbergFeb 14, 2013 8:56 am 
Vitaly DavidovichFeb 14, 2013 9:31 am 
Nathan ReynoldsFeb 14, 2013 9:41 am 
Subject:Re: [concurrency-interest] Using Atomic*FieldUpdater to remove indirection
From:Ariel Weisberg (ari@weisberg.ws)
Date:Feb 13, 2013 1:45:42 pm
List:edu.oswego.cs.concurrency-interest

Hi,

I have two use cases in mind.

I have some COW* data structures that use AtomicReference internally for example [1]COWNavigableSet. Using AtomicReference means there is an extra indirection for every lookup.

The other use case is a field that tracks the [2]last time a message was received from a host. There is a single thread that updates the field every time a message is delivered and multiple threads read the field [3]every time they send a message to that host.

In the last message time tracking use case there will always be a coherence operation for the cache line containing the value tracking the last message time. I suppose it doesn't really matter if the other fields in that class are on the same line because the number of coherence operations remains the same. If there were a get equivalent of lazySet that would be nice.

Thanks,

Ariel

On Wed, Feb 13, 2013, at 03:51 PM, Vitaly Davidovich wrote:

Can you elaborate a bit? Do you mean using AtomicInteger (as an example) instead of an int field inside a class? If so, I'd personally pad out the class with filler fields to avoid false sharing - there's no guarantee that the indirection via AtomicXXX will put memory far apart; padding gives you a bit more control here.

Sent from my phone

On Feb 13, 2013 3:44 PM, "Ariel Weisberg" <[4]ari@weisberg.ws> wrote:

Hi, Does it make sense to use Atomic*FieldUpdater to remove the indirection overhead of an AtomicLong and AtomicReference? Similarly, does it make sense to use Atomic* to create indirection in order to avoid false sharing? Thanks, Ariel _______________________________________________ Concurrency-interest mailing list [5]Conc@cs.oswego.edu [6]http://cs.oswego.edu/mailman/listinfo/concurrency-interest

References