创建一个定时器,触发循环的下一次迭代

时间:2017-12-26 10:50:04

标签: c goto

我必须实现一个旨在测试各种排序算法的C程序。我需要在15种不同的阵列大小上测试每种算法,并为每种大小做20次测试。然后程序计算20次测试的平均时间。

我的问题是:如果超过五分钟我想要一个20测试系列停止,但我不想让程序崩溃:我想测试下一个数组大小的算法。

所以,我在主要功能中发出了五分钟警报:

signal(SIGALRM, alarmHandler);

//Test loop
NEXTTEST: while(maxValues[count + 1] <= MAX){
    ++count;
    int max = maxValues[count];

    alarm(60);
..............

这是我的alarmHandler:

void alarmHandler(int sig){
    printf("Signal %d détecté, arrêt de la série de test en cours...\n", sig);
    goto NEXTTEST;
}

正如你所看到的,我想说,在我的处理程序中:“如果你被触发(如果警报响起),那么回到NEXTTEST标签,增加数组的大小,然后继续这个尺寸的测试“

除了那当然是不可能的,知道我的NEXTTEST标签的声明在我的主要内容,而我的alarmHandler是一个单独的功能。

我怎么能绕过这个问题来创建我的计时器?

提前致谢。

0 个答案:

没有答案