Как справиться с проблемой с бесконечным циклом while в C, не реагируя ?
Следуя моему предыдущему вопросу : Как изменить последовательность с помощью функции mod в C.
У меня есть цикл while, который вычитает прошедшее время, которое я получаю от таймера, и время, когда я нажимаю клавишу (я определил эти клавиши в части ohter в keyEvent), чтобы отобразить различные выходные данные, основанные на задержке.
В основном то, что я хочу сделать, - это нажать выход, в данном случае строковый выход и изображение, так что через несколько секунд строка и изображение будут меняться многократно. И я хочу иметь возможность контролировать изменение частоты с помощью ключа.
Вот в чем идея :
[Every 10 seconds] 1 2 3 4 5 6 7 8 9 (10) 11 12 13 14 15 (→ second-from timer lib.) Display Output 1 = 1-10 second Display Output 2 = 11-20 second, (then Output 1 again, etc) [Every 5 seconds] 1 2 3 4 (5) 6 7 8 9 (10) 11 12 13 14 (15) (→ second-from timer lib.) Display Output 1 = 1-5 second Display Output 2 = 6-10 second Display Output 1 = 11-15 second, (then Output 2 again, etc)
Вот мой цикл while :
Что я уже пробовал:
теперь : время от таймера .
last_event : время нажатия определенной клавиши
задержка : специфическая задержка для каждого ключа
void drawImage(int now, int last_event, int delay){ while(1) { if ((now - last_event) >= delay) { argDrawImage(image1); last_event = now; } else { argDrawImage(image2); now = arUtilTimer(); } } }
Который я собираюсь вызвать позже в моем основном цикле. Но я продолжаю получать не отвечающий результат (черный экран). Код работает нормально, и расчет также работает правильно, если я не вызываю свой цикл while. Есть ли какая-то ошибка в моем цикле while ?
0x01AA
Я слишком ленив, чтобы глубоко копаться в вашем коде. Но на первый взгляд а while(1)
без break
Выглядит очень подозрительно
lock&_lock
это бесконечная петля. Я буду запускать этот цикл до тех пор, пока программа не будет выполнена. Он остановится, если я нажму клавишу Esc, которая также остановит программу. Я обновил свой вопрос, чтобы сделать его более ясным.