c - 如何为 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
这个函数会设置当前线程的计时器吗?如果是,请澄清设置计时器的含义是什么?是不是这个线程会在一段时间后自动停止,还是会停止并重新启动?如果是,谁将杀死谁将启动线程
解决方案
timerfd_settime
设置与文件描述符关联的内核计时器对象m_timerHandleThread->m_fd
。在计时器到期m_timerHandleThread->m_fd
时,准备好读取。
如果您不read
或poll
/epoll
在计时器文件描述符上没有任何反应。
您应该阅读timerfd_settime
文档。
推荐阅读
- python - Python ping IPv6 主机列表,并随时间制作可访问和不可访问主机的字典
- php - PHP - 引用(&)关联数组的未实例化元素时未引发“未定义索引”通知
- c# - 如何在 xamrin 表单中创建谷歌地图弹出窗口
- react-native - ScrollView 内的 FlatList 不滚动
- c - \\\ 只打印一个反斜杠?
- sleep - 在 mshta.exe 单行中使用 WScript.Sleep() 或替换
- angular - 如何在 Angular 5 中定义数组数据类型
- java - Jetty 读取 HTTP 请求
- jquery - 按钮onClick jquery在Safari,iPhone中不起作用
- dialogflow-es - 识别唯一的 Google Home 设备