C cmpxchg-01
{ atomic_t v; atomic_t w;}
P0(atomic_t *v, atomic_t *w) {
int r1 ;
atomic_set(v,1) ;
r1 = atomic_cmpxchg(w, 1, 2);
}
P1(atomic_t *v, atomic_t *w) {
int r1 ;
atomic_set(w,1) ;
r1 = atomic_cmpxchg(v, 1, 2);
}
Observed
w=1; v=1; 1:r1=0; 0:r1=0;