improve pshared barriers
authorRich Felker <dalias@aerifal.cx>
Wed, 28 Sep 2011 22:57:18 +0000 (18:57 -0400)
committerRich Felker <dalias@aerifal.cx>
Wed, 28 Sep 2011 22:57:18 +0000 (18:57 -0400)
commit9cee9307e3b8ed31e772d564d1dc53e6d888acba
tree90355be0615b94ba2cd5ddf7581173862ae7a063
parent95b147967216a057d51a1b970da777486be716e3
improve pshared barriers

eliminate the sequence number field and instead use the counter as the
futex because of the way the lock is held, sequence numbers are
completely useless, and this frees up a field in the barrier structure
to be used as a waiter count for the count futex, which lets us avoid
some syscalls in the best case.

as of now, self-synchronized destruction and unmapping should be fully
safe. before any thread can return from the barrier, all threads in
the barrier have obtained the vm lock, and each holds a shared lock on
the barrier. the barrier memory is not inspected after the shared lock
count reaches 0, nor after the vm lock is released.
src/internal/pthread_impl.h
src/thread/pthread_barrier_wait.c