什么是最有效的睡眠方式"在c中任意一段时间?

时间:2017-05-24 19:13:51

标签: c

是否有一个只是睡觉的功能。时间量不是问题。 应该使用什么方法,以免计算机性能受到干扰?

2 个答案:

答案 0 :(得分:2)

Unix变体通常提供sleep(seconds)usleep(microseconds)。已弃用usleep()以支持POSIX nanosleep()。 Windows提供Sleep( sometime_in_millisecs );

视窗:

#include <windows.h>
#include <stdio.h>

int main() {
    printf( "starting to sleep...\n" );
    Sleep( 3000 );   // sleep three seconds
    printf( "sleep ended\n" );
}

Linux(Unix):

#include <unistd.h>

//unsigned int sleep(unsigned int seconds);

int main() {
    sleep( 3 ); // sleep 3 seconds
    usleep( 3000000 ); // sleep 3 seconds more
    return( 0 );
}

答案 1 :(得分:1)

假设您使用的是Linux平台,那么标准的C函数可以休眠几微秒。

#include <unistd.h>
unsigned int usec;
...
usleep(usec);

当调用Sleep时,程序从运行状态退出,并在睡眠时间结束时重新进入就绪状态,因此不会影响CPU时间。到那时,其他进程/线程可以利用CPU。 如果您使用的Unix变体上没有usleep,则可以使用sleep,粒度是以秒为单位,

unsigned int sleep(unsigned int seconds);