This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: Dummy pthread functions in libc considered harmful
- From: Rich Felker <dalias at libc dot org>
- To: Alexander Monakov <amonakov at ispras dot ru>
- Cc: OndÅej BÃlka <neleai at seznam dot cz>, Samuel Thibault <samuel dot thibault at ens-lyon dot org>, Andreas Schwab <schwab at suse dot de>, libc-alpha at sourceware dot org
- Date: Tue, 25 Aug 2015 10:36:15 -0400
- Subject: Re: Dummy pthread functions in libc considered harmful
- Authentication-results: sourceware.org; auth=none
- References: <mvmr3ms4sbj dot fsf at hawking dot suse dot de> <20150824153816 dot GC3210 at type dot bordeaux dot inria dot fr> <20150824162250 dot GD32742 at brightrain dot aerifal dot cx> <20150825125035 dot GA3463 at domone> <alpine dot LNX dot 2 dot 20 dot 1508251557030 dot 18864 at monopod dot intra dot ispras dot ru>
On Tue, Aug 25, 2015 at 04:01:20PM +0300, Alexander Monakov wrote:
> On Tue, 25 Aug 2015, OndÅej BÃlka wrote:
> > As we internally already have SINGLE_THREAD_P optimization we should use
> > that optimization for all atomics and locks and get slower path only
> > when there is some thread created.
> >
> > We could export that variable for gcc to also speed up atomics.
>
> It's not possible to use "current process is single-threaded" predicate to
> optimize atomics: they might be operating on shared memory.
>
> (however when libpthread is not linked in, you know that pthread_mutex_lock is
> not operating on shared memory: you'd need pthread_mutexattr_setpshared, which
> is not provided in libc.so.6)
This is false. The process that maps and locks the process-shared
mutex need not be the one that called pthread_mutex_init. I ran into
this issue when optimizing static linking; you can't omit
process-shared code when the program doesn't reference
pthread_mutexattr_setpshared, because it could get the mutex from
another program -- that's the whole point of having it be
process-shared.
Rich