Хорошо, у меня есть некоторый C-код для выполнения математической операции, которая может, в значительной степени, занять любое время (конечно, в зависимости от операндов, предоставленных ему). Мне было интересно, есть ли способ зарегистрировать какой-то метод, который будет вызываться каждые n секунд, который может анализировать состояние операции, то есть, на какой итерации она находится в данный момент, возможно, с использованием аппаратного прерывания таймера или что?
Причина, по которой я спрашиваю это, состоит в том, что я знаю, что общий способ реализации этого состоит в том, чтобы отслеживать текущую итерацию в переменной; скажем, целое число с именем progress
и оператор IF в коде:
if ((progress % 10000) == 0)
printf("Currently at iteration %d\n", progress);
но я считаю, что операция мода занимает относительно длительное время, поэтому идея ее выполнения внутри цикла, который будет выполняться много, много раз, пугает меня с точки зрения оптимизации.
Так что у меня возникает ощущение, что иметь внешний способ оповещения о прогрессе печати приятно и эффективно. Есть ли какие-нибудь отличные способы сделать это, или простая «проверка мод» лучше (с точки зрения оптимизации)?