Как устанавливается таймер для темы - PullRequest
0 голосов
/ 25 февраля 2020

В моем проекте я вижу создание одного потока под другим потоком, и внутри функции самого нижнего дочернего потока мы вызываем таймер запуска

its.it_value.tv_sec = timeout / 1000;
        its.it_value.tv_nsec = freq_nanosecs % 1000000000;
        its.it_interval.tv_sec = its.it_value.tv_sec;
        its.it_interval.tv_nsec = its.it_value.tv_nsec;

        (void)(timerfd_settime(m_timerHandleThread->m_fd, 0, &its, NULL));

Я сомневаюсь, timerfd_settime эта функция установит таймер текущая тема? если да, пожалуйста, уточните, что означает установка таймера? Это похоже на то, что этот поток автоматически остановится через некоторое время или он остановится и снова запустится? Если да, кто убьет и кто запустит тему

1 Ответ

1 голос
/ 25 февраля 2020

timerfd_settime устанавливает объект таймера ядра, который связан с файловым дескриптором m_timerHandleThread->m_fd. По истечении таймера m_timerHandleThread->m_fd становится готовым к чтению.

Если вы не указали read или poll / epoll в дескрипторе файла таймера, ничего не произойдет.

Вам следует прочитать документацию timerfd_settime.

...