select在mac上当延迟为何不管用?+ 50


   
  void msleep(int m) {
  
if(m > 0) {
struct timeval tt;
tt.tv_sec = 0;
tt.tv_usec = m * 1000;
select(0, NULL, NULL, NULL, &tt);
}
}

在 Linux/Android 上都可以使用以上方法实现指定毫秒的延迟
为何在 OS X 上无法实现,而 iOS 上可以



相关链接

mac C++

天使心中黑暗 10 years, 3 months ago

囧,mac 上对 struct timeval 有数值限制

   
  typedef int __int32_t;
  
typedef __int32_t __darwin_useconds_t;

__darwin_suseconds_t tv_usec;

虽然上限可以表示 pow(2, 31) / 1000 / 1000 大致 2k 多秒,
但是传入超过 1000000 的值就会被认为是无效的参数

ps: Linux/Android 上没有此限制

小可爱阿德德 answered 10 years, 3 months ago

Your Answer