gpt4 book ai didi

c - C中的运行时限制计时器

转载 作者:太空宇宙 更新时间:2023-11-04 03:03:12 25 4
gpt4 key购买 nike

我想在 C 语言中为我的算法设置一个运行时限制(以小时为单位),以便当它达到限制时,算法停止(例如,在 12 小时)。有没有人对如何执行此操作有任何建议?

最佳答案

您可以使用 time() 来获取开始时间和算法中每次迭代的时间。可以使用difftime()计算差值,当差值超过一定值时终止算法。

假设您的算法是迭代的,下面是一个在 5 秒后终止循环的示例代码。

#include <stdio.h>
#include <time.h>

int main(int argc, char **argv)
{
time_t start_time;
time_t now_time;

time(&start_time);
while (1) {
/* Your algorithm goes here */

/* Time check code */
time(&now_time);

if (difftime(now_time, start_time) >= 5) {
break;
}
}

return 0;
}

这是一个非常简单的解决方案,适用于您知道在算法执行期间会经常调用时间检查代码的许多情况。如果您无法找到放置时间检查代码的好位置,以便在算法执行期间经常调用它,则另一种方法是在线程中运行您的算法,并在超过限制时终止它。

#include <stdio.h>
#include <time.h>
#include <pthread.h>

void *algo(void *arg)
{
while (1) {
printf("I AM THE ALGO!!\n");
}

return NULL;
}

int main(int argc, char **argv)
{
time_t start_time;
time_t now_time;

pthread_t algo_thread;

int ret = pthread_create(&algo_thread, NULL, algo, NULL);
time(&start_time);

/* Time check loop */
while (1) {
time(&now_time);

if (difftime(now_time, start_time) >= 5) {
break;
}
}

return 0;
}

关于c - C中的运行时限制计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9035848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com