当前位置: 技术问答>linux和unix
【求助】请教一下关于条件变量的一个问题。
来源: 互联网 发布时间:2017-03-16
本文导语: 请问一下pthread_cond_timedwait 在什么情况下,超时时间到了没返回?现在遇到了一个比较奇怪的问题。我设置的是超时时间是当前时间+5秒 但是一直阻塞在timedwait,时间超过了也没返回。之前有pthread_mutex_lock的。 | ...
请问一下pthread_cond_timedwait 在什么情况下,超时时间到了没返回?现在遇到了一个比较奇怪的问题。我设置的是超时时间是当前时间+5秒 但是一直阻塞在timedwait,时间超过了也没返回。之前有pthread_mutex_lock的。
|
无代码,无真相!
简单例子
简单例子
#include
#include
#include
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
int main(int argc, char *argv[])
{
struct timespec ts;
ts.tv_sec = 5 + time(NULL);
ts.tv_nsec = 0;
pthread_mutex_lock(&mutex);
system("date '+%H:%M:%S'");
pthread_cond_timedwait(&cond, &mutex, &ts);
system("date '+%H:%M:%S'");
pthread_mutex_unlock(&mutex);
clock_gettime(CLOCK_REALTIME, &ts);
ts.tv_sec += 5;
pthread_mutex_lock(&mutex);
system("date '+%H:%M:%S'");
pthread_cond_timedwait(&cond, &mutex, &ts);
system("date '+%H:%M:%S'");
pthread_mutex_unlock(&mutex);
return 0;
}
|
在CU问即可,这两边我都在混。