[Haskell-cafe] Thread scheduling

David Powell david at drp.id.au
Fri Jun 11 02:09:55 EDT 2010


On Fri, Jun 11, 2010 at 3:34 PM, Luke Palmer <lrpalmer at gmail.com> wrote:

> Say, using System.Time.getClockTime.
>
> Luke
>
> On Thu, Jun 10, 2010 at 11:31 PM, Luke Palmer <lrpalmer at gmail.com> wrote:
> > On Thu, Jun 10, 2010 at 11:50 AM, Andrew Coppin
> > <andrewcoppin at btinternet.com> wrote:
> >> Control.Concurrent provides the threadDelay function, which allows you
> to
> >> make the current thread sleep until T=now+X. However, I can't find any
> way
> >> of making the current thread sleep until T=X. In other words, I want to
> >> specify an absolute wakeup time, not a relative one.
> >
> > Modulo a small epsilon between the two actions, can't you just get the
> > current time and subtract it from the target time?  threadDelay is
> > allowed to delay for too long anyway, so doing it this way does not
> > lose you any correctness.
> >
> > Luke
> >
>

This is a slightly different issue, but isn't there a potential problem with
threadDelay?  I noticed that internally threadDelay uses gettimeofday() as
the absolute time source (on linux at least).   Isn't there potential
problem with this since wall-clock time isn't guaranteed to be monotonic
increasing?  On linux, I'd have thought the "right" thing to do would be to
use clock_gettime(CLOCK_MONOTONIC) although that is probably not very
portable.

-- David
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20100611/ab8f7c04/attachment.html


More information about the Haskell-Cafe mailing list