pthread_cond_timedwait设定

pthread_cond_timedwait用于在指定的时间之前阻塞,与pthread_cond_wait的用法基本相同,
区别在于在由 abstime指定的时间之后pthread_cond_timedwait()不再被阻塞。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
struct timespec abstime; //绝对时间
struct timeval now;
int err;
int timeout_ms  = 500; //超时时间毫秒
gettimeofday(&now, NULL); //获得精确到微秒(1000,000分之一秒)
int nsec = now.tv_usec * 1000 + (timeout_ms % 1000) * 1000000;
abstime.tv_nsec = nsec % 1000000000; //纳秒 1000,000,000分之一秒
abstime.tv_sec = now.tv_sec + nsec / 1000000000 + timeout_ms / 1000;  //秒
err = pthread_cond_timedwait(&(&p_decode->datafifo)->cond, 
&(&p_decode->datafifo)->mutex,&abstime);
if(err == ETIMEDOUT)
{
	//超时后的处理
}