首页 > 解决方案 > 如何为 Thread 设置计时器

问题描述

在我的项目中,我看到在另一个线程下创建一个线程,并且在我们调用启动计时器的最低子线程的函数内

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这个函数会设置当前线程的计时器吗?如果是,请澄清设置计时器的含义是什么?是不是这个线程会在一段时间后自动停止,还是会停止并重新启动?如果是,谁将杀死谁将启动线程

标签: cmultithreadingtimerpthreads

解决方案


timerfd_settime设置与文件描述符关联的内核计时器对象m_timerHandleThread->m_fd。在计时器到期m_timerHandleThread->m_fd时,准备好读取。

如果您不readpoll/epoll在计时器文件描述符上没有任何反应。

您应该阅读timerfd_settime文档。


推荐阅读