У меня есть программа, которая запускается каждые 5 минут, когда фондовый рынок открыт, что происходит, когда он запускается один раз, а затем вводит следующую функцию, которая возвращается через 5 минут, если фондовый рынок открытый.Необъяснимый сбой во время опроса системного времени
То, что я не понимаю, заключается в том, что после некоторого периода времени, обычно около 18 или 19 часов, он выдает сообщение об ошибке sigsegv. Я понятия не имею, почему, поскольку он не пишет ни о какой памяти, хотя я мало знаю о системном типе, так что, может быть, так оно и есть?
В любом случае, любая помощь, которую вы могли бы дать, была бы очень признательна! Заранее спасибо!!
void KillTimeUntilNextStockDataReleaseOnWeb()
{
SYSTEMTIME tLocalTimeNow;
cout<<"\n*****CHECKING IF RUN HAS JUST COMPLETED OR NOT*****\n";
GetLocalTime(&tLocalTimeNow);//CHECK IF A RUN HAS JUST COMPLETED. IF SO, AWAIT NEXT 5 MINUTE MARK
while((tLocalTimeNow.wMinute % 5)==0)
GetLocalTime(&tLocalTimeNow);
cout<<"\n*****AWAITING 5 MINUTE MARK TO UPDATE STOCK DATA*****\n";
GetLocalTime(&tLocalTimeNow);//LOOP THROUGH THIS SECTION, CHECKING CURRENT TIME, UNTIL 5 MINUTE UPDATE. THEN PROCEED
while((tLocalTimeNow.wMinute % 5)!=0)
GetLocalTime(&tLocalTimeNow);
cout<<"\n*****CHECKING IF MARKET IS OPEN*****\n";
//CHECK IF STOCK MARKET IS EVEN OPEN. IF NOT, REPEAT
GetLocalTime(&tLocalTimeNow);
while((tLocalTimeNow.wHour < 8)||(tLocalTimeNow.wHour) > 17)
GetLocalTime(&tLocalTimeNow);
cout<<"\n*****PROGRAM CONTINUING*****\n";
return;
}
Кстати, ожидание-ожидание действительно грубое, особенно за несколько минут за раз. (Использование вашего процессора будет стоить 100%, и ваш компьютер будет очень горячим в течение длительных периодов времени.) Вместо этого предпочитайте спать в это свободное время. –
И это не совсем неслыханно для процессора с перегревом для генерации случайных ловушек ошибок, таких как SEGV. Однако не говорю, что это ваш случай, особенно если это всегда SEGV, а не что-то еще - если он повторяется/согласуется, то перегрев является менее вероятным виновником, хотя это все еще возможно ... – twalberg
Если вы хотите подождать следующий 5-минутный знак, вы можете просто использовать «Сон (300)», который будет работать в течение 300 секунд, используя 0% процессорного времени вместо 100% -ного времени процессора - тогда ваш компьютер сможет делать другие полезные вещи с процессором, а он ждет. Вместо вашего процесса, говорящего: «Мы еще там?» как Ослик в фильме Шрека. –