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以上精度才有保证