This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Synchronizing auxiliary mutex data


On Jun 20 2017, Torvald Riegel <triegel@redhat.com> wrote:

> You were talking about ordering of the writes. to __owner.  This happens
> through the happens-before established through the unlock->lock
> synchronization.  Specifically, in unlock:
>   store(&owner, 0, mo_relaxed) ->sb store(&lock, 0, mo_release)
> and in lock:
>   cas(&lock, expect==0, new==1, mo_acquire)==success
>     ->sb store(&owner, TID, mo_relaxed)
> where ->sb is sequenced-before, so essentially program order.  The CAS
> that succeeds is a load too that reads-from the store in unlock that
> writes 0.

I don't understand how writing to lock has any influence on the access
to owner.  What guarantees that the modification of owner in the
unlocking thread is seen by the locking thread?

Andreas.

-- 
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]