大佬教程收集整理的这篇文章主要介绍了Android设备上的Boost Asio deadline_timer不会在到期时被解雇,但会在稍后的时间点被解雇,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
注意:以下代码在普通Linux系统上按预期工作.是什么让它在Andorid系统上的工作方式不同?
码:
void print(asio::deadline_timer* ptimer,const asio::error_code& err) { struct timeval tval; if(0 == gettimeofday(&tval,NULL)) { std::cout <<" Timer... sec::microsec = "<<tval.tv_sec<<"::"<<tval.tv_usec<< std::endl; } else { std::cout <<" Timer... gettimeofday Error!" << std::endl; } ptimer->expires_from_Now(boost::posix_time::milliseconds(100)); ptimer->async_wait(boost::bind(&print,ptimer,asio::placeholders::error)); }
Timer... sec::microsec = 1298328679::39207 Timer... sec::microsec = 1298328680::46773 Timer... sec::microsec = 1298328681::54624 Timer... sec::microsec = 1298328682::63861 Timer... sec::microsec = 1298328683::65740 Timer... sec::microsec = 1298328684::69301 Timer... sec::microsec = 1298328685::76500 Timer... sec::microsec = 1298328686::85768
如果你看看boost / asio / time_Traits.hpp中的默认timer_Traits,你会看到如果没有定义,asio会使用second_clock作为它的计时器.
此定义来自boost / date_time / compiler_config.hpp,以BOOST_HAS_GETTIMEOFDAY或BOOST_HAS_FTIME为条件.举个例子,大概应该定义前者.
我不知道android是否被认为是自己的平台,或者如果boost将其检测为linux.在boost / config / platform / linux.hpp中,它被定义为:
// // If glibc is past version 2 then we definitely have // gettimeofday,earlier versions may or may not have it: // #if Defined(__GLIBC__) && (__GLIBC__ >= 2) # define BOOST_HAS_GETTIMEOFDAY #endif
这可能是你想为android添加额外条件的地方.
以上是大佬教程为你收集整理的Android设备上的Boost Asio deadline_timer不会在到期时被解雇,但会在稍后的时间点被解雇全部内容,希望文章能够帮你解决Android设备上的Boost Asio deadline_timer不会在到期时被解雇,但会在稍后的时间点被解雇所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。