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) { //超时后的处理 } |