Date: Fri, 12 Nov 2010 21:29:01 +0800 From: David Xu <davidxu@freebsd.org> To: Jilles Tjoelker <jilles@stack.nl> 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 Message-ID: <4CDD411D.4060304@freebsd.org> In-Reply-To: <20101112131941.GA57806@stack.nl> References: <201011100127.oAA1Rmrh069656@svn.freebsd.org> <20101112131941.GA57806@stack.nl>
next in thread | previous in thread | raw e-mail | index | archive | help
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.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4CDD411D.4060304>