2015-10-27 31 views
1

我正在尝试使用boost的高分辨率计时器并且出现编译错误。请从下面的代码片段,boost :: asio :: high_resolution_timer的用法示例?

boost::asio::io_service    _svc; 
boost::asio::high_resolution_timer _timer(_svc, boost::chrono::seconds(1)); 

错误:

error: no matching function for call to ‘boost::asio::basic_waitable_timer::basic_waitable_timer(boost::asio::io_service&, boost::chrono::seconds)’

+1

使用boost :: posix_time :: seconds(1)代替boost :: chrono :: seconds(1)。 – Jonathan

+0

试过&我得到这个,错误:没有匹配函数调用'boost :: asio :: basic_waitable_timer :: basic_waitable_timer(boost :: asio :: io_service&,boost :: posix_time ::秒)' –

+0

@Jonathan我upvoted,但我们misremembered(这是deadline_timer我认为) – sehe

回答

1

高分辨率定时器显然使用C++ 11的计时库的引擎盖下(如果可用):boost/asio/high_resolution_timer.hpp线48

#elif defined(BOOST_ASIO_HAS_STD_CHRONO) 
typedef basic_waitable_timer< 
    std::chrono::high_resolution_clock> 
    high_resolution_timer; 

Live On Coliru

#include <boost/asio.hpp> 
#include <boost/asio/high_resolution_timer.hpp> 

int main() { 
    boost::asio::io_service    _svc; 
    boost::asio::high_resolution_timer _timer(_svc); 

    _timer.expires_from_now(std::chrono::milliseconds(100)); 
} 
+0

作品!感谢您的解决方案。 –