c / c ++是否有延迟/等待/休眠功能?
答案 0 :(得分:8)
C ++没有睡眠功能。但大多数平台都这样做。
在Linux上,您有sleep()
和usleep()
。在Windows上,您有Sleep()
。
您只需要包含相应的标题即可访问它们。
答案 1 :(得分:6)
我所知道的最接近跨平台睡眠功能的是boost :: thread。它被称为sleep
。
但是,如果您正在使用普通“sleep(unsigned int seconds)
可用的平台,那么我只是使用它。
答案 2 :(得分:2)
答案 3 :(得分:1)
睡眠()?不知道,只是一个想法。
答案 4 :(得分:1)
啊哈,你可以在windows.it中使用Sleep()的内核函数,在linux中它是sleep(x) x = mil-sec
答案 5 :(得分:1)
睡眠不是很准确,因为它只给你几秒钟的粒度,你的过程可能不会在“点”上醒来。如果你想要更准确的计时器。我会使用select系统调用。 unix和windows都有它。
这样的东西会睡10个微秒 struct timeval tv;
tv.sec = 0;
tv.tv_usec = 10;
选择(0,NULL,NULL,NULL,&安培; TV);
答案 6 :(得分:0)
答案 7 :(得分:0)
对于跨平台,您可以设计自己的睡眠功能。请参阅下面的示例 -
MyClass::MySleepMethod(int milisec)
{
#ifdef WINDOWS
Sleep(milisec);
#else
sleep(milisec);
#endif
}
答案 8 :(得分:-1)
我问强大的谷歌,它的first answer就像:
int x,y;
for(x = 0; x < 2000; x++)
{
for(y = 0; y < 2000000; y++)
{
}
}
但是你必须调整for循环系统中的数字。
time_t start_time, cur_time;
time(&start_time);
do
{
time(&cur_time);
}
while((cur_time - start_time) < 3);
和
clock_t start_time, cur_time;
start_time = clock();
while((clock() - start_time) < 3 * CLOCKS_PER_SEC)
{
}
最后但并非最不重要
还有其他一些功能 可以使用。对于Windows计算机, 有_ftime,Sleep()和 QueryPerformanceCounter()函数, 以及系统计时器。