[concurrency-interest] concurrency puzzle

Vijay Saraswat vijay at saraswat.org
Mon Sep 11 22:49:19 EDT 2006


David Holmes wrote:

>I don't claim to understand the attempted formalism of this. The difference
>between:
>
>    int x;
>
>and
>
>    int x = 0;
>
>is that given a thread T that is reading x from an instance that was
>unsafely published, and where T first writes the value x=N, then in the
>first case the legal values for the read of x is only N, while in the second
>case it is 0 or N.
>
>I guess the practical consequence is that in the second case you may
>actually discover that you have a bug due to unsafe publication, while in
>the first case you likely never will. Of course it would be perfectly legal
>(probably not worth the effort) for the compiler to optimize away writes of
>default values in the constructor, such that the runtime behaviour of both
>cases is the same.
>
>Where do you see the potential for a huge difference?
>  
>
As I said in my message, the first program fragment has no 
unsynchronized writes -- so no possibility of a race. But the second 
does. So there is a potential for a race involving a thread that reads 
the value of the variable x.



More information about the Concurrency-interest mailing list