Страница: 1 | 2 |
Вопрос: API долго думает - прога висит. А если не потоки?
Добавлено: 05.09.06 22:54
Автор вопроса: Z_of_X | ICQ: 997550
Выполняю Апи gethostbyaddr, но пока она выполнится пройдет секунда, а то и 2-3, прога в этот момент не отвечает.
Потоки - срывают башню у VB.
Выход есть?
Ответы
Всего ответов: 20
Номер ответа: 1
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #1
Добавлено: 05.09.06 23:19
выход есть, использовать внешнюю длл библиотеку написанную на чем-нить другом.
Номер ответа: 2
Автор ответа:
Z_of_X
ICQ: 997550
Вопросов: 5
Ответов: 18
Профиль | | #2
Добавлено: 05.09.06 23:47
АЦТОЙййй
Номер ответа: 3
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #3
Добавлено: 06.09.06 00:23
Юзать .NET
Номер ответа: 4
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #4
Добавлено: 06.09.06 02:10
Юзать WSAAsyncGetHostByName.
Номер ответа: 5
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #5
Добавлено: 06.09.06 02:11
Блин, WSAAsyncGetHostByAddr.
Номер ответа: 6
Автор ответа:
Z_of_X
ICQ: 997550
Вопросов: 5
Ответов: 18
Профиль | | #6
Добавлено: 06.09.06 03:10
Спасиба GSerg, но там еще у меня куча "тормозящие" АПИ.
Реализовываю "многопоточность" в нескольких процессах. Екзешник будет запускать другие екзешники, сразу несколько(как потоки), а эти в свою очередь после отработки будут возвращать результат в само приложение, которое ведет контроль за вспомогательными екзешниками(сколько и когда запускать).
Обход с тылу, точнее через жопу.
Номер ответа: 7
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #7
Добавлено: 06.09.06 03:30
Уууууу...
Говорят же тебе - юзай .NET
Номер ответа: 8
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #8
Добавлено: 06.09.06 07:44
Ну это, я бы сказал, не "с тылу", а совсем-совсем через жопу.
Номер ответа: 9
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #9
Добавлено: 06.09.06 11:21
Сто раз писал. Используй ActiveX.EXE вместо Standard. StartMode - StandAlone, Threading Model - ThreadPerObject.
Далее при запуске в Sub_Main проверяешь - является ли это основным (первым) потоком. Если да - показываешь форму и т.п. Все остальные классы, экземпляры которых будут создаваться через CreateObject, будут создаваться в отдельных потоках. Основное отличие от CreateThread состоит в потоковой модели - вместо Free используются Apartment потоки. Как следствие - синхронизацию выполняет COM, и в твоей проге все будет работать шоколадно.
Номер ответа: 10
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #10
Добавлено: 06.09.06 11:25
Да, чуть не забыл. Для запуска потока придется использовать неявный вызов через создание и удаление таймера. Дальше синхронизация через Event'ы.
Номер ответа: 11
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #11
Добавлено: 06.09.06 12:54
2LOL, я к те как-нить еще обращусь с этим вопросом )
Номер ответа: 12
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #12
Добавлено: 06.09.06 13:09
Мона на PB DLL сделать, там прекрасно потоки работают...
Номер ответа: 13
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #13
Добавлено: 06.09.06 13:27
Да всегда пожалуйста )
2HACKER Это самое ответил sne в посте N1. На что Z_of_X ему ответил в посте N2
Номер ответа: 14
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #14
Добавлено: 07.09.06 15:15
Ну мож человек кроме васика ничё незнает, поэтому на "на чем-нить другом", ответил Ацтой... А я вот с идеей продолжать юзать любимый васик )
Номер ответа: 15
Автор ответа:
Z_of_X
ICQ: 997550
Вопросов: 5
Ответов: 18
Профиль | | #15
Добавлено: 07.09.06 23:25
Не, Аццтой я ответил, потому что в падлу
Прогу так, для себя в принципе пишу, так на скорую руку. замарачивацо не охота. Хочется побыстрее. Иначе бы на Си писал (думаю такой уровень я на Си осилю)