嗨再次提出一个问题:我需要在我的提升线程中计算我的函数所花费的时间:这是代码:
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,我已经添加了测试12微秒的睡眠功能,所以在最好的方式我会有12微秒过去但仍然是0 .. 我需要告诉线程在读取时间后更新定时器??
感谢
答案 0 :(得分:4)
根据boost documentation,local_time
可能无法在Win32系统上实现微秒级别的分辨率:
ptime microsec_clock :: local_time()
使用亚秒级分辨率时钟获取当地时间。在Unix系统上,这是使用GetTimeOfDay实现的。在大多数Win32平台上,它是使用ftime实现的。 Win32系统通常不能通过此API实现微秒级分辨率。如果更高的分辨率对您的应用程序至关重要,请测试您的平台以查看已达到的分辨率。
可能您唯一的选择是使用high resolution timer(非便携式)