我使用非常簡單的代碼中的iOS升壓期限計時器到期不準確的iOS
結果測試截止時間定時器是不準確的: 在桌面或模擬器,其結果將是20或21,在移動,結果 會24,25,我想實行一個庫的玩家,所以5ms錯誤 是不行的。
如何使計時器在iOS上更準確?
下面是代碼:
boost::thread* _thread;
boost::asio::deadline_timer* _timer;
boost::asio::io_service _io_service;
boost::posix_time::ptime _lastTime;
void test()
{
_timer = new boost::asio::deadline_timer(_io_service);
_timer->expires_from_now(boost::posix_time::milliseconds(0));
_timer->async_wait(boost::bind(case1));
_thread = new boost::thread(boost::bind(&boost::asio::io_service::run, &_io_service));
}
void case1()
{
boost::posix_time::ptime currentTime = boost::posix_time::microsec_clock::local_time();
if (_lastTime.is_not_a_date_time() == false) {
boost::posix_time::time_duration diff = currentTime - _lastTime;
std::cout << "run time: " << diff.total_milliseconds() << std::endl;
}
_lastTime = boost::posix_time::microsec_clock::local_time();
_timer->expires_from_now(boost::posix_time::milliseconds(20));
_timer->async_wait(boost::bind(case1));
}
在桌面或模擬器,其結果將是移動20或21, ,其結果將是24,25, 我想實現播放器的庫,5ms的錯誤是不允許的。 – PatrickSCLin 2014-09-22 06:24:10
什麼是默認** ['tolerance'](https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSTimer_Class/index.html#//apple_ref/occ/instp/NSTimer/tolerance)**值? – sehe 2014-09-22 06:35:35
它應該每20毫秒觸發一次 – PatrickSCLin 2014-09-22 06:38:53