pthread_cond_timewait用来让线程睡眠无效?
inline static void
thread_sleep(long int sec, long int milsec)
{
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
struct timespec time;
bzero(&time, sizeof(struct timespec));
time.tv_sec = sec;
time.tv_nsec = milsec * 1000000;
pthread_mutex_lock(&mutex);
pthread_cond_timedwait(&cond, &mutex, &time);
pthread_mutex_unlock(&mutex);
pthread_mutex_destroy(&mutex);
pthread_cond_destroy(&cond);
}
这么一个函数,发现根本无法让线程阻塞,直接就过去了
thread_sleep(long int sec, long int milsec)
{
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
struct timespec time;
bzero(&time, sizeof(struct timespec));
time.tv_sec = sec;
time.tv_nsec = milsec * 1000000;
pthread_mutex_lock(&mutex);
pthread_cond_timedwait(&cond, &mutex, &time);
pthread_mutex_unlock(&mutex);
pthread_mutex_destroy(&mutex);
pthread_cond_destroy(&cond);
}
这么一个函数,发现根本无法让线程阻塞,直接就过去了
作者: morocco 发布时间: 2011-01-27
pthread_cond_timedwait的时间参数是绝对时间,不是相对时间,你要用gettimeofday拿到现在的时间再加上interval
我查到了,呵呵
我查到了,呵呵
作者: morocco 发布时间: 2011-01-27