0

我有一个用例,我想获取一个条件变量并在一段时间后释放它(例如:我有一个按时间排序的事件队列,我想阻塞指定的持续时间。)

Duration = Earliest Time in Q - Current Time()

我遇到了以下内容,这正是我的目的。

 pthread_cond_timedwait(pthread_cond_t *restrict cond,
 pthread_mutex_t *restrict mutex,
 const struct timespec *restrict abstime);

但问题是 timespec.sec 是 time_t (这是一个 32 有符号类型)并且它溢出。有解决方法吗?是否有任何其他可用的构造,我们将阻止更长的时间?我正在使用 Linux 平台。

4

1 回答 1

1

在 64 位 Linux 环境中,time_t是 64 位而不是 32 位。32 位time_t要到 2038 年才会溢出,因此您还有几年的时间来升级您的机器。

于 2012-10-11T03:21:54.043 回答