当前位置: 技术问答>linux和unix
pthread_cond_timedwait为什么不起作用
来源: 互联网 发布时间:2015-05-18
本文导语: 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("DDn"); } } 上边是线程函数,但是一旦执行,就根本没有阻塞2...
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("DDn");
}
}
上边是线程函数,但是一旦执行,就根本没有阻塞2秒,屏幕一直输出dd;请问为什么!?
{
struct timespec tm;
tm.tv_sec = 2;
tm.tv_nsec = 0;
pthread_mutex_lock(&mutex);
while(1)
{
pthread_cond_timedwait(&cond, &mutex, &tm);
printf("DDn");
}
}
上边是线程函数,但是一旦执行,就根本没有阻塞2秒,屏幕一直输出dd;请问为什么!?
|
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;
注意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;
|
把你的所有代码帖出来看看.
pthread_cond_timedwait是最大等待信号.即最多等待那么多的时间,如果有信号则根本就不等待.
pthread_cond_timedwait是最大等待信号.即最多等待那么多的时间,如果有信号则根本就不等待.
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。