c / c ++有延迟功能吗?

时间:2009-09-24 09:05:50

标签: c++ c

c / c ++是否有延迟/等待/休眠功能?

9 个答案:

答案 0 :(得分:8)

C ++没有睡眠功能。但大多数平台都这样做。

在Linux上,您有sleep()usleep()。在Windows上,您有Sleep()

您只需要包含相应的标题即可访问它们。

答案 1 :(得分:6)

我所知道的最接近跨平台睡眠功能的是boost :: thread。它被称为sleep

但是,如果您正在使用普通“sleep(unsigned int seconds)可用的平台,那么我只是使用它。

答案 2 :(得分:2)

取决于平台。例如sleep()usleep()

答案 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)

没有跨平台解决方案。 sleep()是POSIX,而不是标准的C / C ++。

您可以查看provides sleep的跨平台库,例如SDL

Source code

答案 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()函数,   以及系统计时器。