Boost logo

Boost Users :

Subject: Re: [Boost-users] Boost ASIO steady_timer and date change
From: Aaron_Wright_at_[hidden]
Date: 2016-05-06 16:04:54


> From: Sabino Colonna <sabinocolonna_at_[hidden]>
> To: boost-users_at_[hidden]
> Date: 05/06/2016 12:50 PM
> Subject: [Boost-users] Boost ASIO steady_timer and date change
> Sent by: "Boost-users" <boost-users-bounces_at_[hidden]>
>
> Hello,
>
> I'm using a steady_timer to perform an asynchronous wait in the
> following manner:
>
> boost::asio::io_service io_service;
> boost::asio::steady_timer my_timer(io_service);
>
> void onTimeout(const boost::system::error_code& e)
> {
> // Print something
> }
>
> ...
> my_timer.expires_from_now(std::chrono::seconds(600));
> my_timer.async_wait(onTimeout);
> io_service.run();
>
> If system 'date' does not change, everything is ok. But if I change
> 'date' by hand while the timer is running, it expires before 600
> seconds (more or less after 5 minutes) and 'onTimeout' is called.
> With synchronous wait, all is ok.
> According to documentation, steady_timer should not be affected by
> time change.
> Which may be the problem?

I had some weird issues with the steady timer a while back. I did a little
digging and found that the steady timer can silently be replaced by the
normal system timer in the standard library. I used
BOOST_ASIO_DISABLE_STD_CHRONO to disable this "functionality". I have no
clue what the standard library was thinking.



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net