宣告msleep在哪里?

时间:2010-08-23 05:38:37

标签: c++ header

来自here的消息来源说它应该适用于iPhone。我已经使用它了,但是我得到了2个错误,说msleep()是未声明的。我试图包括unistd.h,time.h和许多其他人。我怎样才能让它发挥作用?感谢。

3 个答案:

答案 0 :(得分:5)

msleep()是来自早期BSD的非标准工件,在clock_nanosleep()nanosleep()进入POSIX之前。

这是不可移植的。在某些系统上,它默认可用 - 在其他系统上,必须使用_BSD_SOURCE define编译代码。

iPhone是Mac OS X的远亲,它与NeXT相距甚远,后者与BSD 4.x相距甚远。所以这个函数可能会卡在某个某个头/库中,但你不应该使用它。如果内存对我有用,请检查NSThread的{​​{1}}静态方法。

答案 1 :(得分:4)

该链接线程中没有任何内容表明msleep可用。原作者bagusflyer实际上实现了他们的拥有 msleep,说明:

  

对不起。也许我在代码中遗漏了一些东西。这是我的问号:

#include <sys/time.h>
void msleep (unsigned int ms) {
    int microsecs;
    struct timeval tv;
    microsecs = ms * 1000;
    tv.tv_sec  = microsecs / 1000000;
    tv.tv_usec = microsecs % 1000000;
    select (0, NULL, NULL, NULL, &tv);  
}

但是,您应该小心使用该代码,因为我认为从内存中select()是可中断的。

答案 2 :(得分:1)

也许你可以使用usleep()。它也在unistd.h。