我试图弄清楚如何在 c++ 中计算时间。我正在制作一个程序,其中每 3 秒发生一次事件,例如打印出“hello”等;
问问题
825 次
3 回答
3
这是一个使用两个线程的示例,因此您的程序不会this_thread::sleep_for()
在 C++11 中冻结:
#include <iostream>
#include <chrono>
#include <thread>
using namespace std;
void hello()
{
while(1)
{
cout << "Hello" << endl;
chrono::milliseconds duration( 3000 );
this_thread::sleep_for( duration );
}
}
int main()
{
//start the hello thread
thread help1(hello);
//do other stuff in the main thread
for(int i=0; i <10; i++)
{
cout << "Hello2" << endl;
chrono::milliseconds duration( 3000 );
this_thread::sleep_for( duration );
}
//wait for the other thread to finish in this case wait forever(while(1))
help1.join();
}
于 2013-04-06T23:57:17.843 回答
1
您可以使用boost::timer
C++ 计算时间:
using boost::timer::cpu_timer;
using boost::timer::cpu_times;
using boost::timer::nanosecond_type;
...
nanosecond_type const three_seconds(3 * 1000000000LL);
cpu_timer timer;
cpu_times const elapsed_times(timer.elapsed());
nanosecond_type const elapsed(elapsed_times.system + elapsed_times.user);
if (elapsed >= three_seconds)
{
//more then 3 seconds elapsed
}
于 2013-04-06T23:40:40.627 回答
0
它取决于您的操作系统/编译器。
案例 1:
如果你有 C++11,那么你可以按照 Chris 的建议使用:
std::this_thread::sleep_for() // 你必须包含头文件线程
案例2:
如果你在windows平台上,那么你也可以使用类似的东西:
#include windows.h
int main ()
{
event 1;
Sleep(1000); // number is in milliseconds 1Sec = 1000 MiliSeconds
event 2;
return 0;
}
案例3:
在linux平台上你可以简单地使用:
sleep(In seconds);
于 2013-04-06T23:58:47.773 回答