Переполнение секунд в pthread_cond_timedwait
У меня есть сценарий использования, в котором я хочу получить условную переменную и выпустить ее через некоторый интервал времени (например, у меня есть очередь упорядоченных по времени событий, и я хочу заблокировать ее в течение указанной продолжительности.)
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.
1 ответ
В 64-битных средах Linux, time_t
это 64 бит, а не 32. 32 бит time_t
не будет переполнен до 2038 года, поэтому у вас есть несколько лет, чтобы обновить вашу машину.