C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – boost :: thread_sleep vs boost :: chrono :: thread_clock不一致大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
当我运行此代码

#include <iostream>
#include <boost/thread.hpp>
#include <boost/chrono/thread_clock.hpp>

void foo() {
    boost::this_thread::sleep(boost::posix_time::microseconds(500));
}


int main() {
    boost::chrono::thread_clock::time_point start = boost::chrono::thread_clock::Now();    
    foo();   
    boost::chrono::thread_clock::time_point stop = boost::chrono::thread_clock::Now();    
    std::cout << "duration = " 
              << boost::chrono::duration_cast<boost::chrono::microseconds>(stop-start).count() 
              << " microsec\n";
}

我得到以下输出

duration = 121 microsec
duration = 121 microsec
duration = 110 microsec
duration = 114 microsec

此外,当我用不同的值(例如200)替换500时,输出始终大约为100.使用-O3进行编译.为什么时机不一致?

PS:我读到睡眠已被弃用,但是当我用它替换它时

boost::this_thread::sleep_for(boost::chrono::microseconds(200));

输出在~20微秒的范围内.

解决方法

的确,我忽略了一些明显的事情 documentation说:

我认为wall-time是实时传递的,而不是cpu-time,它不包括线程休眠的时间.无论如何,为了获得一致的数字,我不得不使用boost :: chrono :: system_clock.

大佬总结

以上是大佬教程为你收集整理的c – boost :: thread_sleep vs boost :: chrono :: thread_clock不一致全部内容,希望文章能够帮你解决c – boost :: thread_sleep vs boost :: chrono :: thread_clock不一致所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。