cvs commit: src/include stdio.h src/lib/libc/gen _pthread_stubs.c src/lib/libc/stdio _flock_stub.c asprintf.c findfp.c fseek.c local.h refill.c snprintf.c sprintf.c sscanf.c ungetc.c vasprintf.c vfprintf.c vsnprintf.c vsprintf.c vsscanf.c

davidxu davidxu at freebsd.org
Mon May 9 15:27:07 PDT 2005


Joerg Sonnenberger wrote:
On Mon, May 09, 2005 at 09:37:16PM +0800, davidxu wrote:

Why can't this code use PTHREAD_MUTEX_RECURSIVE?

Joerg
Hmm, we don't create mutex at same time when FILE is created,
it will be created automatically by pthread_mutex_lock when
program is threaded, it is zero cost if program is single thread.


Well, for a truely single threaded program (not linked against libc_r
or others), we can use __isthreaded to skip it. Otherwise we have to
use a mutex anyway. Such optimisations belong IMO into the thread
library and not into libc.
Joerg
We already did the optimizations by using macro FILELOCK In
libc_private.h. Another reason to not use recursive mutex is that
default mutex is not recursive, and dynamically creating it have
race.
David Xu





More information about the Commits mailing list