pthread_cond_timedwait为什么不起作用
void fun()
{
struct timespec tm;
tm.tv_sec = 2;
tm.tv_nsec = 0;
pthread_mutex_lock(&mutex);
while(1)
{
pthread_cond_timedwait(&cond, &mutex, &tm);
printf("DD\n");
}
}
上边是线程函数,但是一旦执行,就根本没有阻塞2秒,屏幕一直输出dd;请问为什么!?
问题点数:80、回复次数:2Top
1 楼hoyt(hoyt(欢迎访问 www.linuxc.net))回复于 2003-12-02 17:01:11 得分 5
把你的所有代码帖出来看看.
pthread_cond_timedwait是最大等待信号.即最多等待那么多的时间,如果有信号则根本就不等待.Top
2 楼growup(Robin Guo)回复于 2003-12-02 17:50:37 得分 75
int pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex, const struct timespec *abstime);
注意abstime是绝对时间
1.
tm.tv_sec = time(NULL)+2;
tm.tv_nsec = 0;
2.
struct timeval now;
gettimeofday(&now);
tm.tv_sec = now.tv_sec + 2;
tm.tv_nsec = now.tv_usec * 1000;
Top




