我希望 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/