HTL_thread_cond_timedwait
等待条件变量信号并设置超时时间。
接口定义
int HTL_thread_cond_timedwait(HTL_thread_cond_t *thread_cond, HTL_thread_mutex_t *thread_mutex, const struct timespec *time);
描述
HTL_thread_cond_timedwait()的调用者指定绝对时间time内等待条件变量thread_cond信号被发出。用户必须在互斥锁thread_mutex锁定时调用此函数。互斥锁将在等待时自动释放。当主叫方被唤醒时,互斥锁将被主叫方自动锁定,后续用户负责解锁互斥锁。如果系统时间在发出条件信号之前超过time,则返回HTL_THREAD_ERR_COND_TIMEDOUT错误码。
此函数将互斥锁thread_mutex与thread_cond关联,用户不能对同一条件变量thread_cond使用多个互斥锁。
即使发生错误,此函数返回后互斥锁仍处于锁定状态。
如果互斥锁是递归互斥锁,则调用方只能锁定一次互斥锁。
参数
参数名 |
类型 |
描述 |
输入/输出 |
---|---|---|---|
thread_cond |
HTL_thread_cond_t * |
条件变量句柄地址。 |
输入 |
thread_mutex |
HTL_thread_mutex_t * |
互斥锁句柄地址。 |
输入 |
time |
struct timespec* |
超时的绝对时间。 |
输入 |
返回值
- HTL_THREAD_SUCCESS:成功。
- 其他:失败。见错误码定义。
示例
1 2 3 4 5 6 7 8 9 10 11 12 | HTL_thread_cond_t cond = HTL_THREAD_COND_NULL; HTL_thread_mutex_t mutex = HTL_THREAD_MUTEX_NULL; struct timespec ts; struct timeval tv; ret = gettimeofday(&tv, NULL); assert(!ret); ts.tv_sec = tv.tv_sec; ts.tv_nsec = tv.tv_usec * 1000; ts.tv_sec += 1; HTL_thread_cond_timedwait(&cond, &mutex, &ts); |
父主题: 条件变量函数