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
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?

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.
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
David Xu

More information about the Commits mailing list