c++ - 检测线程是否被操作系统中断
问题描述
在一个应用程序中,我需要定期读取 std::chrono 的单调和系统时钟,并在其间尽可能减少延迟。
像这样:
#include <iostream>
#include <chrono>
int main() {
bool interrupted = false;
auto time_system = std::chrono::system_clock::now();
auto time_monoton = std::chrono::steady_clock::now();
if (interrupted) {
std::cout << "Thread had been interrupted between clock reading!" << std::endl;
}
else {
//do stuff
}
return 0;
}
当然,程序在捕获时钟值之间被操作系统中断的可能性仍然很小,然后time_system
不会time_monoton
被直接获取。
例如,是否有一个线程状态变量可用于在程序段之间重置并检查线程是否已被操作系统中断。
我发现 boost::threads 可以抛出一个boost::thread_interrupted
-Exception,但我不完全理解这个异常是否仅在其他线程主动调用中断()方法或操作系统中断 prgroams 进程及其时才抛出线程。
STL 或 Boost 中是否有检测程序是否中断的方法?(除了在实际基础上检查单调时钟并定义合理阈值的简单解决方案)
解决方案
推荐阅读
- html - 如何使用 VBA获取标签的“aria-label”属性
- php - 如何检查数字是否等于某个数字然后执行(Mysqli)
- regex - 包含“演示”术语但不包含“测试演示”的正则表达式
- protractor - 将所有测试分组并显示在浏览器堆栈中
- java - 如何防止用户两次输入相同的文本
- google-cloud-platform - 负载平衡托管实例组的集中式日志存储
- javascript - Webpack 从同构组件延迟加载模块(服务器和客户端之间的共享代码)
- mosquitto - 如何禁止或保留 mosquitto 经纪人中的主题?
- ssm - Confd 忽略了我的 aws 配置中设置的角色?
- javascript - 如何使用 React 在emotionjs 中组合样式组件?