[PATCH v4] Make bindresvport() function to multithread-safe
Andreas Jaeger
aj@suse.com
Mon Oct 1 07:59:00 GMT 2012
On Friday, September 28, 2012 10:27:56 Carlos O'Donell wrote:
> On Fri, Sep 28, 2012 at 5:15 AM, Peng Haitao <penght@cn.fujitsu.com>
wrote:
> > bindresvport() uses a static variable port which is not protected.
> > It is not safe when in multithread circumstance.
> >
> > bindresvport() select a port number from the range 512 to 1023, when
> > in multithread circumstance, the port may be 1024. So the static
> > variable will be protected.
>
> Roland, Andreas,
>
> Do you have any comments on this?
>
> Looks like performance goes *up* when we switch to a __thread variable
> and use gettid, but I've asked Peng to justify this.
>
> http://sourceware.org/ml/libc-alpha/2012-09/msg00744.html
The performance numbers look fine to me and - besides some details that
can be sorted out - the patch looks fine as well.
The problem I have with the patch is that there's no rationale why this
patch is really needed. glibc is not threadsafe - but glibc is not
claiming it to be thread-safe either. As a quality of service
implementation we could make it thread-safe but why is that suddenly
needed? The referenced bug report also does not say it.
Peng, why do you think this patch is necessary? Is bindresvport thread
safe on other platforms?
Btw. Is this substential enough to need a copyright assignment and is
there one for Peng Haitao?
Andreas
--
Andreas Jaeger aj@{suse.com,opensuse.org} Twitter/Identica: jaegerandi
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn,Jennifer Guild,Felix Imendörffer,HRB16746 (AG Nürnberg)
GPG fingerprint = 93A3 365E CE47 B889 DF7F FED1 389A 563C C272 A126
More information about the Libc-alpha
mailing list