Вы можете использовать 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;
}