Переполнение секунд в 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 года, поэтому у вас есть несколько лет, чтобы обновить вашу машину.

Другие вопросы по тегам