From owner-svn-src-user@FreeBSD.ORG Fri Nov 12 13:29:22 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from alona.my.domain (localhost [127.0.0.1]) by hub.freebsd.org (Postfix) with ESMTP id E0C251065672; Fri, 12 Nov 2010 13:29:20 +0000 (UTC) (envelope-from davidxu@freebsd.org) Message-ID: <4CDD411D.4060304@freebsd.org> Date: Fri, 12 Nov 2010 21:29:01 +0800 From: David Xu User-Agent: Thunderbird 2.0.0.21 (X11/20090522) MIME-Version: 1.0 To: Jilles Tjoelker References: <201011100127.oAA1Rmrh069656@svn.freebsd.org> <20101112131941.GA57806@stack.nl> In-Reply-To: <20101112131941.GA57806@stack.nl> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: Re: svn commit: r215071 - in user/davidxu/libthr: include lib/libc lib/libc/gen lib/libc/stdio lib/libthr lib/libthr/thread X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Nov 2010 13:29:22 -0000 Jilles Tjoelker wrote: > On Wed, Nov 10, 2010 at 01:27:48AM +0000, David Xu wrote: > >> Author: davidxu >> Date: Wed Nov 10 01:27:48 2010 >> New Revision: 215071 >> URL: http://svn.freebsd.org/changeset/base/215071 >> > > >> Log: >> Convert pthread_mutex_t and pthread_cond_t to structure based instead of >> pointer type, this allows us to support process-shared. >> > > Very nice. > > Apart from supporting process-shared, this also helps avoid the "array > of synchronization objects" anti-pattern (false sharing). It is not so > bad for the old struct pthread_mutex which is 64 bytes on i386, but in > other cases one cache line may contain parts of multiple unrelated > synchronization objects. > Don't know what did you mean, did you think that sizeof struct pthread_mutex smaller than a cache line is a bad thing ? > In this regard, it would be better for stdio to allocate > struct { FILE file; pthread_mutex_t lock; } > rather than separate FILEs and locks. > This breaks ABI. :-) > Like the sem_t change, this changes the ABI in a way symver can only > partially deal with (think plugins with pthread_mutex_t in struct in > public header file). However, I think the change should be made > regardless. > > Yes, we found that some GNU libraries have to bump version.