Boost timed_wait leap seconds problem

Posted by Isac on Stack Overflow See other posts from Stack Overflow or by Isac
Published on 2010-05-06T21:26:23Z Indexed on 2010/05/06 21:28 UTC
Read the original article Hit count: 785

Filed under:
|

Hi, I am using the timed_wait from boost C++ library and I am getting a problem with leap seconds.

Here is a quick example from boosts documentation:

boost::system_time const timeout=boost::get_system_time() + boost::posix_time::milliseconds(500);

extern bool done;
extern boost::mutex m;
extern boost::condition_variable cond;

boost::unique_lock<boost::mutex> lk(m);
while(!done)
{
    if(!cond.timed_wait(lk,timeout))
    {
        throw "timed out";
    }
}

The timed_wait function is returning 24 seconds earlier than it should. 24 seconds is the current amount of leap seconds in UTC.

So, boost is widely used but I could not find any info about this particular problem. Has anyone else experienced this problem? What are the possible causes and solutions?

Notes: I am using boost 1.38 on a linux system. I've heard that this problem doesn't happen on MacOS.

© Stack Overflow or respective owner

Related posts about c++

Related posts about boost