[Patch] C1X threading support
Dag-Erling Smørgrav
des at des.no
Thu Dec 22 16:59:18 UTC 2011
John Baldwin <jhb at freebsd.org> writes:
> Dag-Erling Smørgrav <des at des.no> writes:
> > Poul-Henning Kamp <phk at phk.freebsd.dk> writes:
> > > mtx_unlock(l)
> > > {
> > > assert(l->id == thread_id);
> > > l->id = NULL;
> > > atomic_magic_unlock(l->lock_field)
> > > }
> > susceptible to race conditions
> How so?
I should have specified "if called from a thread that does not own the
mutex"
> > > mtx_assert_held(l)
> > > {
> > > assert(l->lock-field != 0);
> > > assert(l->id == thread_id);
> > > }
> > susceptible to race conditions
> How so?
I was going to point out that the state of the mutex can change between
the two asserts, but as you say, at least one of them is guaranteed to
fail... *if* you assume that these fields can be read atomically, which
was one of my objections.
DES
--
Dag-Erling Smørgrav - des at des.no
More information about the freebsd-threads
mailing list