[concurrency-interest] HalfSync
Allan Kielstra
kielstra at ca.ibm.com
Wed May 24 17:49:41 EDT 2006
It looks a lot like AtomicInteger in the sense that the read getCount,
get) is not synchronized.
Without a Just In Time compiler (JIT) HalfSync would probably be very
slightly faster in the uncontended case because there's no need to call
down to Unsafe.compareAndSwap). With a JIT, it's probably too close to
call. (In both cases, the incrementing thread gets a lock immediately
using inlined code and updates "count" or "value.")
HalfSync does make an assumption: words are written atomically by
hardware. That wasn't always a valid assumption. If that assumption
doesn't hold, you do lose the atomic nature of AtomicInteger.
Allan Kielstra
IBM Canada Lab
Phone: +1 (905) 413-3558 T/L 969-3558
kielstra at ca.ibm.com
"Hanson Char" <hanson.char at gmail.com>
Sent by: concurrency-interest-bounces at cs.oswego.edu
24/05/2006 05:07 PM
To
concurrency-interest at cs.oswego.edu
cc
Subject
[concurrency-interest] HalfSync
Consider the code:
// Only the write is synchronized, not the read
public class HalfSync {
private volatile int count;
public HalfSync(int count) {
this.count = count;
}
public int getCount() {
return count;
}
public synchronized int increment(int delta) {
return this.count += delta;
}
}
As far as I can tell, this code is as thread-safe as it would be the case
if both the increment() and getCount() are synchronized, but would allow
higher level of concurrency. (Similar to CopyOnWriteArrayList).
How would HalfSync compared to AtomicInteger ? Which one should perform
faster ?
Hanson
_______________________________________________
Concurrency-interest mailing list
Concurrency-interest at altair.cs.oswego.edu
http://altair.cs.oswego.edu/mailman/listinfo/concurrency-interest
-------------- next part --------------
An HTML attachment was scrubbed...
URL: /pipermail/attachments/20060524/26a4c8cb/attachment.html
More information about the Concurrency-interest
mailing list