Delphi6

BANNED | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цитата: sleep(100); // для усыпления потока на 100 мс при каждом проходе, чтобы не загружать процессор холостым циклом | Дельный совет, зачем проверять так часто если таймаут будет минимум 10 сек, а проверять даже можно каждую секунду, так как от этого почти ничего не меняется для проверки а зато понижается загрузка процессора. Спасибо Цитата: Сегодня запланировано у меня длительное тестирование при разных ситуациях. Программа думаю ценная так как позволяет просматривать состояние переменных (если их логировать) именно в потоках, чего стандартными способами добиться нельзя. Кстати ведение логов думаю будет рационально до того момента как программа из Альфа и Бета версий перейдет в Финальную. А как вы поступаете с вашими проектами? Ведете ли логи, если да то как потом получаете их от ваших пользователей? OdesitVadim Ваша прога супер, удивительно но кажется ошибка в коде запуска одновременных потоков. После длительных запусков, алгоритму кажется что поток еще работает а на самом деле он уже убит, в логах видно! Так что начал пересматривать код. Все замечания по коду приняты и уже внесены, спасибо п.с. Скоро выложу результаты поисков Выше указанный текст не совсем правда, вот что получил после теста: Код: procedure TProxyChecker.Execute; var PCT: TProxyCheckerThread; StartTime: Integer; timePass: Integer; i: integer; begin i := Random(1000000); try OutputDebugString(pChar('Information: #'+ IntToStr(fThreadIndex) +'('+ IntToStr(i) + ') Start Working!')); //Prepare thread and execute to recieve result from URL PCT := TProxyCheckerThread.Create(fUrl, fServer, fPort); StartTime := GetTickCount; timePass := 0; //Work until time will finish and result from page will be recieved while (timePass < fTimeout) and (not PCT.GetResult) do begin Sleep(100); timePass := GetTickCount-StartTime; //Wait for result or timeout end; OutputDebugString(pChar('Information: #'+ IntToStr(fThreadIndex) +'('+ IntToStr(i) + ') Timrout!')); //Checking if result exist and analyze it if PCT.GetResult then begin fProxyLatency := timePass; OutputDebugString(pChar('Information: #'+ IntToStr(fThreadIndex) +'('+ IntToStr(i) + ') Before Analyze!')); AnalyzeResult(PCT.GetResultString); OutputDebugString(pChar('Information: #'+ IntToStr(fThreadIndex) +'('+ IntToStr(i) + ') After Analyze!')); end else fProxyType := ptBad; OutputDebugString(pChar('Information: #'+ IntToStr(fThreadIndex) +'('+ IntToStr(i) + ') Start Term!')); //Terminate and wait until thread will finish its working (may cause hang on) PCT.TerminateConnection; PCT.WaitFor; finally FreeAndNil(PCT); end; OutputDebugString(pChar('Information: #'+ IntToStr(fThreadIndex) +'('+ IntToStr(i) + ') Finish Term!')); fResult := True; end; | Ошибка была там где ее ни кто не ждал Теперь идет анализ данной процедуры. 00000426 211.00106812 [2588] Information: #3(95638) Finish Term! ...REMOVED... 00000427 211.00234985 [2588] Information: #2(458778) Start Working! 00000428 211.00700378 [2588] Information: #0(302291) Start Working! 00000429 211.00834656 [2588] Information: #1(371939) Start Working! 00000430 211.01031494 [2588] Information: #3(644890) Start Working! 00000431 211.23666382 [2588] Information: #4(736844) Timrout! 00000432 211.23706055 [2588] Information: #4(736844) Start Term! 00000433 211.23727417 [2588] Information: #4(736844) Finish Term! 00000434 211.24046326 [2588] Information: #4(204749) Start Working! 00000435 211.63813782 [2588] Information: #3(644890) Timrout! 00000436 211.63964844 [2588] Information: #3(644890) Before Analyze! 00000437 221.07006836 [2588] Information: #2(458778) Timrout! 00000438 221.07040405 [2588] Information: #2(458778) Start Term! 00000439 221.07049561 [2588] Information: #0(302291) Timrout! 00000440 221.07055664 [2588] Information: #1(371939) Timrout! 00000441 221.07061768 [2588] Information: #0(302291) Start Term! 00000442 221.07290649 [2588] Information: #1(371939) Start Term! ...REMOVED... 00000514 261.44900513 [2588] Information: #4(316211) Start Term! 00000515 261.45089722 [2588] Information: #4(316211) Finish Term! 00000516 261.45382690 [2588] Information: #4(261328) Start Working! ...REMOVED... | Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 05:28 03-06-2006 | Исправлено: Delphi6, 10:56 03-06-2006 |
|