![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Зависает gethostbyaddr при запущенной аське что делать? [D5, Win95/98]
MegaVolt © (2006-03-24 14:36:00)Добрый день.
Столкнулся с такой проблемой:
При запущенной аське зависает gethostbyaddr в моей проге.
С чем это может быть связано? Например может ли аська менять какие либо параметры таймаутов или ещё что.
И как сделать чтобы всё работало?
MegaVolt (2006-03-31 14:36:00) [1]Смысл в том чтобы найти где у бага ноги растут. А реально после подключения компа ещё его сканирование есть. Но оно время отнимает а пока ещё не глючило. Поэтому и выключено
Сергей М. (2006-03-31 13:32:00) [2]А в чем вообще тайный смысл подключать ресурс и тут же его отключать ?
MegaVolt (2006-03-31 13:15:00) [3]>А отладчик на что ?
А как отловить отладчиком зависание некой функции в многопоточном приложении если вероятность зависания 1/500?
Сергей М. (2006-03-31 12:32:00) [4]
> Точно не знаю
А отладчик на что ?
> Это существенно изменит логику работы приложения
Ну хотя бы ради эксперимента ..
MegaVolt (2006-03-31 11:37:00) [5]>Ф-ция GetHostByAddr будучи вызванной совсем не возвращает управление или выполняется неоправданно долго ?
Точно не знаю. Но за время порядка часа она управление не вернула :(
>Может следует отказаться от блокирующей ф-ции в пользу ее асинхронной версии (WSAAsyncGetHostByAddr) ?
Это существенно изменит логику работы приложения. Да и сама функция без WNetAddConnection2; WNetCancelConnection2; работает просто великолепно.
Сергей М. (2006-03-31 11:23:00) [6]А что собственно подразумевается под "зависает" ?
Ф-ция GetHostByAddr будучи вызванной совсем не возвращает управление или выполняется неоправданно долго ?
Может следует отказаться от блокирующей ф-ции в пользу ее асинхронной версии (WSAAsyncGetHostByAddr) ?
MegaVolt (2006-03-31 11:15:00) [7]>Думаю что Аська со своими "настройками" здесь совершенно ни при чем
Опыт говорит о другом. А что именно влиет определить сложно. Или кривая реализация чего то в аське мешающее работать другим прогам в сети. Или сама винда которая не тянет такую нагрузку. Хотя количеством потоков я пробовал играть. Резульат тот же.
Сергей М. (2006-03-31 10:44:00) [8]Думаю что Аська со своими "настройками" здесь совершенно ни при чем - дело происходит в Маздае (Маздай = win9x/Me), а маздайная реализация WNet-функциональности всегда славилась своей "глюкавостью".
MegaVolt (2006-03-31 10:34:00) [9]>И как этот код связан с "настройками аськи" ?
Если бы я знал :(
>К тому же ты утверждаешь, что поток виснет до sleep'a ..
Если при добавлении WNetAddConnection2; WNetCancelConnection2; начинает виснуть GetHostByAddr; то логично предположить что виснет следующий поток а не текущий. Как это возможно понятия не имею. Возможно данные операции требуют некого времени для своего завершения. И если не дать им этого времени то GetHostByAddr; может зависнуть.
Но факт остаётся фактом. Глюк существенно уменьшился.
Сергей М. (2006-03-31 08:26:00) [10]И как этот код связан с "настройками аськи" ?
К тому же ты утверждаешь, что поток виснет доsleep'a ..
MegaVolt (2006-03-30 18:38:00) [11]
Старт поток
Пинг
извлечь MAC
если Mac есть
выполнить
begin
GetHostByAddr;
WNetAddConnection2;
WNetCancelConnection2;
end;
Sleep(1000);
конец потока
Сергей М. (2006-03-30 13:23:00) [12]
> Вставка в конце каждого потока
Что есть "конец потока" ?
Иллюстрируй в коде ..
MegaVolt (2006-03-30 13:01:00) [13]Вставка в конце каждого потока Sleep(1000); существенно улучшила ситуацию но окончательно проблему не сняла.
Сергей М. (2006-03-29 10:35:00) [14]
> какая разница какой клиент?
Ну мало ли какой еще (кроме широкоизвестных) ты пользуешь ..
MegaVolt (2006-03-29 10:25:00) [15]>Мною таковые не замечены
Тогда какая разница какой клиент? ;)
Сергей М (2006-03-28 18:53:00) [16]Мною таковые не замечены
MegaVolt (2006-03-28 16:51:00) [17]Значит есть какие то глюки с этими клиентами?
Сергей М. (2006-03-28 15:59:00) [18]
> зачем было знать версию Аськи?
Гдея спрашивал про "версию" ?!
Я спрашивал про конкретного клиентаэтой сети) ... Коих на сей день существует несметное множество - Mirabilis ICQ Client, Miranda, Trillian, RAT &RQ и т.д. и т.п.
MegaVolt (2006-03-28 15:34:00) [19]Сергей М.
А зачем было знать версию Аськи? Есть какие то извесные глюки с другими версиями аськами?
MegaVolt (2006-03-28 11:45:00) [20]Определение имени провайдера не помогло.
Наблюдение:
Частота зависания с аськой и без аськи отличаются примерно раза в три. Без аськи один зависон на 1500 компов. С аськой один на 500.