日期:2014-05-16  浏览次数:20838 次

sem_timedwait 使用纳秒失败,使用秒成功,求救啊?
代码:
    sem_t mysem;
  7 void *delay(void *)
  8 {
  9         for(int i = 0;i < 100;i++)
 10         {
 11                 struct timespec ts;
 12                 memset(&ts,0,sizeof(struct timespec));
 13                 ts.tv_sec = time(NULL);
 14                 ts.tv_nsec = 990*1000*1000;
 15                 sem_timedwait(&mysem,(const struct timespec*)&ts);
 16                 printf("%d\n",i);
 17                 //sem_post(&mysem);
 18         }
 19 }
    int main()
    {
      pthread thread
      pthread_create(&thread,NULL,delay,NULL)
      pthread_join(thread,NULL)
    }

------解决方案--------------------
应该深入理解操作系统原理, 虽然提供了这么一个纳秒的接口,但任备做一次切换就不知道花了多少纳秒了,所以不可能做到精确, 一般来说10ms以上精度才有保证