【发布时间】:2013-06-18 10:05:38
【问题描述】:
我正在尝试将 pthread_cond_timedwait 用于毫秒睡眠间隔,但我没有获得睡眠持续时间。我的线程比我提到的睡得更多。下面是我的实现。让我知道我是否在任何地方错了。
struct timeval tp;
struct timespec ts;
int rc = gettimeofday(&tp, NULL);
ts.tv_sec = tp.tv_sec;
ts.tv_nsec = tp.tv_usec * 1000;
ts.tv_nsec += 30 * 1000000; //30 is my milliseconds
pthread_mutex_lock(&mtxPlaybackWait);
pthread_cond_timedwait(&playbackSignal, &mtxPlaybackWait, &ts);
pthread_mutex_unlock(&mtxPlaybackWait);
【问题讨论】:
-
你能知道线程休眠的确切时间吗?是否发生超时?
-
发生超时,睡眠时间总是超过我设置的毫秒数。互斥锁是否需要额外的时间?