svn commit: r194783 - head/lib/libc/stdtime
M. Warner Losh
imp at bsdimp.com
Wed Nov 18 03:58:27 UTC 2009
In message: <20091117182501.GA70742 at stack.nl>
Jilles Tjoelker <jilles at stack.nl> writes:
: On Tue, Nov 17, 2009 at 01:50:32AM +0200, Dmitry Pryanishnikov wrote:
: > > Author: edwin
: > > Date: Tue Jun 23 22:28:44 2009
: > > New Revision: 194783
: > > URL: http://svn.freebsd.org/changeset/base/194783
:
: > > Log:
: > > Remove duplicate if-statement on gmt_is_set in gmtsub().
:
: > > MFC after: 1 week
:
: > > Modified:
: > > head/lib/libc/stdtime/localtime.c
:
: > This change looks like a (small?) pessimization to me: before it,
: > _MUTEX_LOCK/_MUTEX_UNLOCK pair would be skipped for the case gmt_is_set
: > == TRUE (all invocations except the first one), now it won't. I'm not
: > sure whether this is critical here though...
:
: It is certainly less efficient, but the old code was (most likely)
: wrong. It used an idiom known as "double checked locking", which is
: incorrect in most memory models. The problem is that the store to
: gmt_is_set may become visible without stores to other memory (gmtptr and
: what it points to) becoming visible.
Wouldn't a memory barrier solve that at a much lower cost than a full
lock?
Warner
More information about the svn-src-all
mailing list