[cpp-threads] Yet another visibility question
    Peter Dimov 
    pdimov at mmltd.net
       
    Sun Oct  8 20:36:23 BST 2006
    
    
  
Hans Boehm wrote:
> In the current proposal (N2052), the assert is not guaranteed to
> succeed, except in the fetch_add_ordered case.  A synchronizes with,
> and hence happens before, B only of B is an acqire operation that
> reads the value written by release operation A.
>
> If you used r1 = load_acquire(y) in thread 2, the assert would always
> succeed.
>
> I'm OK with that behavior.
Thanks. So if my understanding is correct,
- an "ordered" RMW operation can be specified as the read part having 
acquire semantics and the write part having release semantics;
- reference count decrements for mutable objects need to be "ordered" in 
order to transitively propagate the writes to the object to the thread 
performing the last decrement and invoking the destructor.
We've been assuming so far that fetchadd_release is OK until the final 
decrement, and this doesn't seem to be the case. 
    
    
More information about the cpp-threads
mailing list