2009-02-12 67 views
3

c组件中是否有等待声明?例如,等待0.5秒后再继续进行?C组件中的等待语句?

谢谢!

+0

你编程的操作系统是什么? – 2009-02-12 15:36:23

+0

你是什么意思的C组件? – starblue 2009-02-12 15:43:51

回答

7

在POSIX有

usleep(500); 

nanosleep(...); 

看看的usleep(3)nanosleep(2)手册。 编辑nanosleep似乎现在要走的路,usleep甚至根据其手册页POSIX.2008已弃用!

3

对于Windows有此功能的API

Sleep(500); 

可用来看看它的MSDN页面。它睡眠指定的毫秒数。

0

睡眠在POSIX中也是可用的,区别在于参数指定的数量为而不是毫秒该进程应该睡眠。

7

总结和纠正约翰内斯·魏斯后的一个小问题(非德国键盘,不好意思):

在老派POSIX,您可以使用usleep()函式功能,它接受微秒数作为无符号整数参数睡眠。因此,为半秒睡觉,你会打电话:

#include <unistd.h> 
usleep(500000); /* Five hundred thousand microseconds is half a second. */ 

对于较新的POSIX式的节目(我的Gentoo Linux盒子”手册页说,这是POSIX.1-2001),你会使用了nanosleep( ),这需要一个指向一个结构的指针来保持睡眠时间。睡眠半秒应该是这样的:

#include <time.h> 
struct timespec t; 
t.tv_sec = 0; 
t.tv_nsec = 500000000; /* Five hundred million nanoseconds is half a second. */ 
nanosleep(&t, NULL); /* Ignore remainder. */ 

的第二个参数了nanosleep()被称为“REM”,并接收其余的时间,如果睡眠是某种中断。在这里,为了简单起见,我将它留在NULL中。你可以做一个循环,直到rem(足够接近)为零,以确保你真正得到了你的睡眠,而不管任何中断。