From owner-freebsd-current@FreeBSD.ORG Sat Oct 29 05:01:11 2005 Return-Path: X-Original-To: current@FreeBSD.org Delivered-To: freebsd-current@FreeBSD.ORG Received: from [127.0.0.1] (localhost [127.0.0.1]) by hub.freebsd.org (Postfix) with ESMTP id 8B5D516A41F; Sat, 29 Oct 2005 05:01:09 +0000 (GMT) (envelope-from davidxu@freebsd.org) Message-ID: <43630215.9050700@freebsd.org> Date: Sat, 29 Oct 2005 13:01:09 +0800 From: David Xu User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.7.10) Gecko/20050806 X-Accept-Language: en-us, en MIME-Version: 1.0 To: "M. Warner Losh" References: <35696.1130538037@critter.freebsd.dk> <20051029005719.I20147@fledge.watson.org> <4362CBC2.8050602@freebsd.org> <20051028.221825.90826015.imp@bsdimp.com> In-Reply-To: <20051028.221825.90826015.imp@bsdimp.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: pertti.kosunen@pp.nic.fi, phk@phk.freebsd.dk, rwatson@FreeBSD.org, current@FreeBSD.org, jura@networks.ru Subject: Re: Timers and timing, was: MySQL Performance 6.0rc1 X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 29 Oct 2005 05:01:11 -0000 M. Warner Losh wrote: >: thread libraries use clock_gettime, this becauses there is >: pthread_cond_timedwait and other synchronization objects >: like rwlock, and mutex all have a timeout version, I think >: pthread_cond_timedwait is mostly used in some applications, >: though normally, application is not looking for high accuracy. >: they will get benefit from the clock_gettime speed improvement. > >And unfortuantely, the argument that needs to be passed to abstime is >unspecified, at leas tin our man page. Also unfortuantely, >CLOCK_REALTIME seems to be what's required here (our man page just >says 'if the system time reaches the time specified in abstime'), >rather than CLOCK_MONOTONIC so jumps in system time can cause >previously short timeouts to become rather large timeouts... This is >a flaw in the API. :-( > >Warner > > I would rather to think it is brokeness of POSIX thread API specification, in real world, nobody uses the timeout as an absolute timestamp, almost all applications are doing relative timeout sleep, if implementor 100% respects POSIX spec, he will break many applications. libthr supports pthread_condattr_setclock, you can select CLOCK_MONOTONIC for pthread_cond_timedwait, but internally, all absolute timeout waits are converted to relative. David Xu