再次提一个提升问题:我需要计算我的function在我的提升线程中花费的时间:这里是代码:
boost::posix_time::microseconds tes( 12 ); int i = 0; while( true ) { boost::posix_time::ptime start = boost::posix_time::microsec_clock::local_time( ); myFunction( ); boost::this_thread::sleep( tes ); boost::posix_time::ptime end = boost::posix_time::microsec_clock::local_time( ); boost::posix_time::time_duration elapsed = end - start; }
所以我尝试了很多次,但经过time_duration总是0,我已经添加了testing12微秒的睡眠function,所以在最好的方式,我将有12微秒过去了,但仍然是0 ..我需要告诉线程更新计时器后的时间读取?
谢谢
根据boost文档 , local_time
可能不会在Win32系统上达到微秒级的分辨率:
ptime microsec_clock :: local_time()
使用亚秒级分辨率时钟获取当地时间。 在Unix系统上,这是使用GetTimeOfDay实现的。 在大多数的Win32平台上,它使用ftime来实现。 Win32系统通常不会通过这个API实现微秒的分辨率。 如果更高的分辨率对您的应用程序至关重要,请测试您的平台以查看实现的分辨率
可能你唯一的选择是使用高分辨率定时器 (不便携式)