c++ - 预先设置 C++ 代码的执行时间

标签 c++ shell time c++14 execution

我希望 C++ 代码运行一段特定的时间并在结束执行前完成一条语句。例如,考虑以下有关程序执行的场景:

Initialise a counter with 0. If the execution time is equal to x milliseconds then print the current value of the counter, else increment the counter by 1.

上述任务可以通过编写如下 C++ 代码来完成:

#include<iostream>
using namespace std;

int main(){
    int c=0;
    while(true){
        /* do something to check the execution time, 
        if it is equal to x milliseconds print the value of c and exit*/

        c++;
    }
    return 0;
}

实际上,我想比较用 C++ 实现的针对特定问题的两种优化算法,基于它们在执行相同时间量的情况下可以提供多少最优解。

我在互联网上搜索过,但找不到我真正想要的。看起来基于线程的解决方案在那里,但我不希望涉及线程,除非它是非常必要的。如果问题可以单独通过某些 C++ 功能解决,这是有利的,但如果一些调用 C++ 代码的 shell 脚本可以解决问题(我很可能在 Linux 系统上运行代码)。感谢您的帮助!

最佳答案

您正在寻找 timeout(1) .

如果您更愿意用 C++ 来实现(我认为脚本解决方案更好——让程序做一件事并把它做好,除非您的资源非常有限),那么经典的 UNIX 解决方案是 alarm(2) (虽然有几个更新的计时器,但可以基于哪个超时)。

如果您不想在超时到期后让程序死掉,您还想做其他事情,那么您需要为 SIGALRM 信号设置一个处理程序。

关于c++ - 预先设置 C++ 代码的执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37555753/

相关文章:

R difftime 输出根据输入格式而不同(as.character() 包装器与没有包装器)

c++ - 使用结构化绑定(bind)定义类成员

c++ - 将逗号运算符与条件运算符一起使用

c++ - 在套接字关闭之前不发送数据

linux - Bash - 命令和变量扩展

parsing - 为什么 go 使用本地位置而不是 UTC 解析我的时间戳

c++ - 为什么这段代码不影响输出?

shell - 在 shell 函数中 cat 一个文件

linux - 创建自定义 Vim 命令以在 bash 配置文件中运行函数

c - clock_gettime系统调用的clk_id有什么区别