宣告msleep在哪里?

ben*_*aus 0 c++ header

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

pax*_*blo 5

该链接线程中没有任何内容表明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);  
}
Run Code Online (Sandbox Code Playgroud)

但是,您应该小心使用该代码,因为我认为,根据记忆,这select()是可中断的。


Dum*_*001 5

msleep()是从早期的BSD系统非标准的神器,之前clock_nanosleep()nanosleep()使它成为POSIX.

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

iPhone是Mac OS X的远亲,它与NeXT相距甚远,后者与BSD 4.x相距甚远.所以函数可能会卡在某处的某个头/库中,但不管怎样你都不应该使用它.如果没记错的话,检查NSThreadsleepForTimeInterval:静态方法.