c++ 函数超时自动停止,并且可以设置超时时间
时间: 2024-03-09 21:50:15 浏览: 27
C++ 函数超时自动停止可以通过设置计时器来实现。可以使用 <chrono> 头文件中的 high_resolution_clock 来实现计时器功能。
下面是一个实现函数超时自动停止并且可以设置超时时间的示例代码:
```c++
#include <chrono>
#include <iostream>
#include <stdexcept>
using namespace std;
using namespace std::chrono;
void func() {
// 模拟一个较慢的函数
for (int i = 0; i < 1000000000; ++i);
}
void timeout_func(milliseconds timeout_duration) {
auto start_time = high_resolution_clock::now();
while (true) {
func();
auto current_time = high_resolution_clock::now();
auto elapsed_time = duration_cast<milliseconds>(current_time - start_time);
if (elapsed_time >= timeout_duration) {
throw runtime_error("Timeout!");
}
}
}
int main() {
try {
timeout_func(milliseconds(1000)); // 设置超时时间为 1 秒钟
} catch (const exception& e) {
cerr << e.what() << endl;
}
return 0;
}
```
在上述代码中,timeout_func 函数会不断调用 func 函数,直到超时时间到达。如果超时时间到达,则会抛出一个 runtime_error 异常。可以在 main 函数中捕获该异常并进行处理,如输出错误信息等。
需要注意的是,上述代码中的超时时间是以毫秒为单位设置的,可以根据实际需要进行调整。此外,上述代码只是一个示例,实际应用中可能需要根据具体情况进行修改。