restore lock-skipping for processes that return to single-threaded state
authorRich Felker <dalias@aerifal.cx>
Fri, 22 May 2020 21:45:47 +0000 (17:45 -0400)
committerRich Felker <dalias@aerifal.cx>
Fri, 22 May 2020 21:45:47 +0000 (17:45 -0400)
commit8d81ba8c0bc6fe31136cb15c9c82ef4c24965040
tree356aea3c8d201c577158b163eace2e0014e03fed
parentf12888e9eb9eed60cc266b899dcafecb4752964a
restore lock-skipping for processes that return to single-threaded state

the design used here relies on the barrier provided by the first lock
operation after the process returns to single-threaded state to
synchronize with actions by the last thread that exited. by storing
the intent to change modes in the same object used to detect whether
locking is needed, it's possible to avoid an extra (possibly costly)
memory load after the lock is taken.
src/internal/libc.h
src/malloc/malloc.c
src/thread/__lock.c
src/thread/pthread_create.c