Boost logo

Boost :

From: Loïc Joly (loic.actarus.joly_at_[hidden])
Date: 2002-05-25 04:06:01


Hello everybody,

This is my first post in this list, even if I have been reading it
partially for a couple of months.

I recently had a look at the thread library, I was surprised to see that
one of the features I use most often wasn't in the library, namely to be
able to have a periodical thread.

The function thread::sleep does not fullfill my need, as can be seen in
the following example :

   I want to run some calculations at 100Hz, those calculations
   take between 1ms and 5ms, if I just want to put a sleep after
   my calculations are done, I do not know how long it should wait
   (between 9ms and 5ms), unless I measure how long my calculations
   actually were, which I find a tedious task.

I have used myself for some time the traditionnal way to define that by
calling a function of the type :
typedef void ThreadEntryFunction(void *data);
void setPeriodicalThread (double period, ThreadEntryFunction f, void
*data);

But I recently found another idiom that I found much easyer to use. It
needs the creation of a mutex class that automatically unlock itself at
a specified frequency, and provides access to a class following the Lock
concept.

   timed_mutex mutex (0.01); // frequency 100Hz
   timed_mutex::lock lock(mutex);
   while (true)
   {
       lock.lock();
       doMyCalculations();
   }

I would like to have your feedback about this idea.

Regards,

-- 
Loïc Joly

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk